Estoy trabajando en la implementación de cola para una tarea. Lo tengo funcionando correctamente, pero parece que recibo un error de forma gratuita en momentos aleatorios.Malloc Error: suma de comprobación incorrecta para el objeto liberado
No puedo ver, rastrearlo hasta un patrón o cualquier cosa que no sea consistente.
Por ejemplo, si llamo a mi programa como "tail -24 test.in", obtendría el error de suma de comprobación incorrecta en la misma línea en varias ejecuciones. Sin embargo, con diferentes archivos e incluso diferentes números de líneas para imprimir, regresaré sin errores.
Cualquier idea sobre cómo rastrear el problema, he estado intentando depurarlo durante horas en vano.
Aquí está el código erróneo:
líneas se define como un char ** y fue malloc como:
lines = (char**) malloc(nlines * sizeof(char *));
void insert_line(char *s, int len){
printf("\t\tLine Number: %d Putting a %d line into slot: %d\n",processed,len,slot);
if(processed > numlines -1){//clean up
free(*(lines+slot));
*(lines + slot) = NULL;
}
*(lines + slot) = (char *) malloc(len * sizeof(char));
if(*(lines + slot) == NULL) exit(EXIT_FAILURE);
strcpy(*(lines+slot),s);
slot = ++processed % numlines;
}
¿tiene ranura 0 o 1? ranura nunca excede nlines-1, ¿correcto? – Dre
a la derecha el módulo vuelve automáticamente a 0 – None
¿Qué compilador y qué depurador estás usando? Dependiendo de eso, es posible que puedan brindar ayuda para depurar su problema. –