我在我的 c++ 函数中描述了一个相同的问题,它将几个数组的值写入一个文件。在下文中,我带来了执行此操作的代码部分。
double *VAR = new double[NumPts];
for( iArray = 0; iArray<nArrays; iArray++)
for( iComp=0; iComp<nComponents; iComp++ )
{
for ( k=0; k<dims[2]; k++ )
{
kOffset = k * dims[0] * dims[1];
for ( j=0; j<dims[1]; j++ )
{
jOffset = j * dims[0];
for ( i=0; i<dims[0]; i++ )
{
id = i + jOffset + kOffset;
Values = sgrid->GetArray( iArray )->GetComponent( id, iComp );
VAR[ id] = Values;
}
}
}
INTEGER4 DIsDouble = 1;
// Writing the array into the file.
I = TECDAT112( &NumPts, &VAR[0], &DIsDouble );
}
// Close the file.
I = TECEND112();
我有 5 个数组存储在一个名为 sgrid 的类实例中。数组要么是三维的,要么是一维的。组件总数为 12。每个组件都可以通过 GetArray 和 GetComponent 函数检索。上面的代码循环遍历所有组件,并通过库中的 TECDAT112 函数将它们的值写入文件。(我也在 VS2008 x64 中使用调试模式。)
似乎我的问题的原因有点不同,而不是因为依赖项没有在 VS2008 中编译。实际上,循环继续完美运行,组件 1-9 的值已成功写入。当代码尝试写入组件#10 的值时,就会出现问题。从那里,我得到错误:
“Microsoft Visual Studio C 运行时库检测到致命错误”
并指向函数_CRT_DEBUGGER_HOOK。为了验证这个假设,如果数组及其组件存在问题,我注释掉了将值写入文件的行,并注意到循环成功地遍历了所有 12 个组件。问题可能是因为内存问题吗?