我的c ++函数中的here中描述了同样的问题,它将多个数组的值写入文件中。在下文中,我带来了执行此操作的代码部分。
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();
我有一个名为sgrid的类实例中存储了5个数组。阵列是三维的或一维的。组件总数为12.每个组件都可以通过GetArray和GetComponent函数检索。上面的代码循环遍历所有组件,并通过库中的TECDAT112函数将它们的值写入文件。 (我也在VS2008 x64中使用调试模式。)
似乎我的问题的原因有点不同,而不是因为VS2008中没有编译依赖项。实际上,循环继续完美地工作,并且组件1-9的值被成功写入。当代码尝试写入组件#10的值时,会发生此问题。从那里,我得到错误:
“Microsoft Visual Studio C运行时库检测到致命错误”
并指出函数_CRT_DEBUGGER_HOOK。为了验证这个假设,如果数组及其组件出现问题,我会注释掉将值写入文件的行,并注意到循环成功通过了所有12个组件。问题可能是因为内存问题吗?