0

我在我的 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 个组件。问题可能是因为内存问题吗?

4

0 回答 0