Depurando corrupção de memória
Anteriormente encontrei um problema com a memória dinâmica em C (visual studio). Eu tinha um programa mais ou menos funcional que jogou um erro em tempo de execução ao liberar um dos buffers. Foi uma clara corrupção de memória, o programa escreveu no final do buffer.
Meu problema é que foi muito demorado rastrear. O erro foi jogado para baixo após a corrupção, e eu tive que depurar manualmente toda a corrida para encontrar quando é o fim do buffer substituído.
Existe alguma maneira de ajudar a rastrear esse problema? se o programa tivesse caído imediatamente eu teria encontrado o problema muito mais rápido ...
um exemplo do problema:
int *pNum = malloc(10 * sizeof(int));
// ||
// \/
for(int i = 0; i < 13; i++)
{
pNum[i] = 3;
}
// error....
free(pNum);