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);