当我在调试模式下运行程序时,遇到了“Debug assertions failed!”错误。我尝试在Visual C++网站上查找此错误,但解释对我来说太高级,并且与我猜测的问题没有任何相似之处。
我已经检查了代码并缩小了错误发生的位置。似乎是在手动删除一堆堆栈数组并在计算机移动到程序的下一部分时发生。当我注释掉释放旧堆栈数组的部分时,程序运行得很好。
我的编程知识还比较基础,你有什么想法?
谢谢。
我在使用Visual C++ 2008。
更多信息:
断点触发在以下代码块:
这段代码来自标签:dbgdel.cpp 我已经“缩小范围”并确定引起问题的代码段如下:
如果我注释掉这一段,程序就可以正常运行。
我已经检查了代码并缩小了错误发生的位置。似乎是在手动删除一堆堆栈数组并在计算机移动到程序的下一部分时发生。当我注释掉释放旧堆栈数组的部分时,程序运行得很好。
我的编程知识还比较基础,你有什么想法?
谢谢。
我在使用Visual C++ 2008。
更多信息:
断点触发在以下代码块:
void operator delete(
void *pUserData
)
{
_CrtMemBlockHeader * pHead;
RTCCALLBACK(_RTC_Free_hook, (pUserData, 0));
if (pUserData == NULL)
return;
_mlock(_HEAP_LOCK); /* block other threads */
__TRY
/* get a pointer to memory block header */
pHead = pHdr(pUserData);
/* verify block type */
_ASSERTE(_BLOCK_TYPE_IS_VALID(pHead->nBlockUse));//<---- break point triggers
_free_dbg( pUserData, pHead->nBlockUse );
__FINALLY
_munlock(_HEAP_LOCK); /* release other threads */
__END_TRY_FINALLY
return;
}
这段代码来自标签:dbgdel.cpp 我已经“缩小范围”并确定引起问题的代码段如下:
delete [] topQuadanglesPositions;
delete [] fourClamps;
delete [] precaculatedClamp1;
delete [] precaculatedClamp2;
delete [] precaculatedClamp3;
delete [] precaculatedClamp4;
delete [] area;
delete [] hullConfiguration;
delete [] output;
delete [] prunedListClamp1;
delete [] prunedListClamp2;
delete [] prunedListClamp3;
delete [] prunedListClamp4;
delete [] numValidLocations;
如果我注释掉这一段,程序就可以正常运行。