Fak*_*ken 3 c++ visual-studio-2008
我"Debug assertions failed!"在调试模式下运行程序时遇到此错误.我尝试在Visual C++网站上查看这个错误,但解释对我来说太先进了,他们与我对问题的最佳猜测没有任何相似之处.
我已经完成了我的代码并缩小了发生错误的点.它似乎发生在代码部分,我在计算机移动到程序的下一部分之前手动删除了一大堆堆数组.当我注释掉释放旧堆数组的部分时,程序运行得非常好.
有什么想法在这里发生?我在编程方面的知识仍然相对基础.
谢谢
我正在使用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;
}
Run Code Online (Sandbox Code Playgroud)
此代码来自选项卡: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;
Run Code Online (Sandbox Code Playgroud)
如果我评论这一部分,程序运行正常.