Falha na asserção de depuração
Eu continuo encontrando isso"Debug assertions failed!"
erro quando executo meu programa no modo de depuração. Tentei procurar esse erro no site visual C ++, mas as explicações são muito avançadas para mim e elas não têm nenhuma semelhança com o que acho melhor sobre o problema.
Examinei meu código e reduzi o ponto em que o erro ocorre. Parece estar acontecendo na parte do código em que eu excluo manualmente um monte de matrizes de heap antes que o computador avance para a próxima parte do programa. Quando eu comento a seção que libera as antigas matrizes de heap, o programa é executado perfeitamente.
Alguma idéia do que está acontecendo aqui? Meu conhecimento em programação ainda é relativamente básico.
obrigado
Estou usando o Visual C ++ 2008.
Mais Informações:
O ponto de interrupção é acionado neste bloco de código:
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;
}
Este código é da guia: dbgdel.cpp
A seção do meu código que eu "reduzi" que causa esse problema é a seguinte:
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;
Se eu comentar esta seção, o programa funciona bem.