Debugowanie uszkodzenia pamięci

Wcześniej natrafiłem na problem z pamięcią dynamiczną w C (studio wizualne). Miałem mniej lub bardziej działający program, który rzucił błąd czasu wykonywania podczas zwalniania jednego z buforów. To było wyraźne uszkodzenie pamięci, program napisał na końcu bufora.

Mój problem polega na tym, że wytropienie było bardzo czasochłonne. Błąd został rzucony w dół po uszkodzeniu i musiałem ręcznie debugować cały bieg, aby znaleźć, kiedy koniec bufora zostanie nadpisany.

Czy jest jakieś narzędzie pomagające w śledzeniu tego problemu? jeśli program uległby awarii natychmiast, znalazłbym problem znacznie szybciej ...

przykład problemu:

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

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

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

questionAnswers(4)

yourAnswerToTheQuestion