Fehlerbehebung bei Speicherbeschädigungen

Früher bin ich auf ein Problem mit dem dynamischen Speicher in C (Visual Studio) gestoßen. Ich hatte ein mehr oder weniger funktionierendes Programm, das beim Freigeben eines Puffers einen Laufzeitfehler verursachte. Es war eine deutliche Speicherbeschädigung, die das Programm über das Ende des Puffers schrieb.

Mein Problem ist, dass das Aufspüren sehr zeitaufwändig war. Der Fehler wurde weit unten nach der Beschädigung geworfen, und ich musste den gesamten Durchlauf manuell ausprüfen, um zu finden, wann das Pufferende überschrieben wird.

Gibt es ein Tool, das Sie bei der Suche nach diesem Problem unterstützt? Wenn das Programm sofort abgestürzt wäre, hätte ich das Problem viel schneller gefunden ...

Ein Beispiel für das Problem:

int *pNum = malloc(10 * sizeof(int));

//                 ||
//                 \/    
for(int i = 0; i < 13; i++)
{
pNum[i] = 3;
}

// error....
free(pNum);

Antworten auf die Frage(4)

Ihre Antwort auf die Frage