Debug-Assertion fehlgeschlage
Ich begegne immer wieder diesem"Debug assertions failed!"
Fehler beim Ausführen meines Programms im Debug-Modus. Ich habe versucht, diesen Fehler auf der Visual C ++ - Website nachzuschlagen, aber die Erklärungen sind für mich zu ausführlich und haben keine Ähnlichkeit mit dem, was ich für das Problem vermutet habe.
Ich habe meinen Code durchgesehen und den Punkt eingegrenzt, an dem der Fehler auftritt. Es scheint in dem Teil des Codes zu passieren, in dem ich eine ganze Reihe von Heap-Arrays manuell lösche, bevor der Computer zum nächsten Teil des Programms wechselt. Wenn ich den Abschnitt auskommentiere, der die alten Heap-Arrays freigibt, läuft das Programm einwandfrei.
Eine Idee, was hier los ist? Meine Programmierkenntnisse sind noch relativ einfach.
Vielen Dan
Ich verwende Visual C ++ 2008.
Mehr Informationen
Der Haltepunkt wird an diesem Codeblock ausgelöst:
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;
}
Dieser Code stammt aus der Registerkarte: dbgdel.cpp
Der Abschnitt meines Codes, den ich "eingegrenzt" habe, der dieses Problem verursacht, lautet wie folgt:
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;
Wenn ich diesen Abschnitt auskommentiere, läuft das Programm einwandfrei.