Anteriormente encontré un problema con la memoria dinámica en C (visual studio). Tenía un programa más o menos funcional que arrojaba un error en tiempo de ejecución al liberar uno de los almacenamientos intermedios. Era una clara corrupción de memoria, el programa escribió sobre el final del búfer.Corrupción de la memoria de depuración
Mi problema es que me llevó mucho tiempo rastrear. El error se redujo después de la corrupción, y tuve que depurar manualmente toda la ejecución para encontrar cuándo se sobrescribe el búfer.
¿Hay alguna herramienta para ayudar a rastrear este problema? si el programa se habría estrellado de inmediato que habría encontrado el problema mucho más rápido ...
un ejemplo de la cuestión:
int *pNum = malloc(10 * sizeof(int));
// ||
// \/
for(int i = 0; i < 13; i++)
{
pNum[i] = 3;
}
// error....
free(pNum);
no es este tipo de lo que la opción del compilador 'Buffer Secutity Check' sin VS hace? – stijn
¿No usa números mágicos? – phant0m
@ phant0m no era un código real, era un ejemplo, ni era mi código ... el búfer se asignó dinámicamente en función del tamaño de los datos, y la función que calcula su tamaño tenía un pequeño error ... además de mi pregunta es acerca de cómo rastrear el problema, no prevenirlo ... –