_CRT_DEBUGGER_HOOK致命错误

时间:2012-06-10 02:33:00

标签: c++ windows fatal-error

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

0 个答案:

没有答案