Depuración de aserción
Sigo encontrando esto"Debug assertions failed!"
error cuando ejecuto mi programa en modo de depuración. Traté de buscar este error en el sitio web visual de C ++, pero las explicaciones son demasiado avanzadas para mí y no tienen ningún parecido con mi mejor conjetura sobre el problema.
Revisé mi código y reduje el punto en el que ocurre el error. Parece estar sucediendo en la parte del código donde elimino manualmente un montón de matrices de almacenamiento dinámico antes de que la computadora pase a la siguiente parte del programa. Cuando comento la sección que libera las antiguas matrices de almacenamiento dinámico, el programa funciona perfectamente bien.
¿Alguna idea de lo que está pasando aquí? Mi conocimiento en programación aún es relativamente básico.
Gracias
Estoy usando Visual C ++ 2008.
Más información:
El punto de ruptura se dispara en este bloque 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 es de la pestaña: dbgdel.cpp
La sección de mi código que he "reducido" que causa este problema es esta:
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;
Si comento esta sección, el programa funciona bien.