Tengo un pequeño fragmento de código. Lo compilé con -lmcheck
ya que estoy intentando depurar un código donde tengo el mismo error similar.Error de recuperación de memoria
consigo este error al ejecutar este código:
memory clobbered before allocated block
Puede alguien explicar la razón por la free(ptr)
me va a lanzar este error?
¿De qué otra forma puedo liberar el puntero?
Gracias.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#define LEN 5
int main(int argc, char *argv[]){
char *ptr = NULL;
ptr = (char *) malloc(LEN+1);// +1 for string
strcpy(ptr, "hello");
int i = 0;
for(i = 0; i<LEN; i++)
{
printf("ptr[%d] = %c\n", i, ptr[i]);
ptr++;
}
free(ptr);
return 0;
}
Además, considere http://stackoverflow.com/questions/605845/doi-i-cast-the-result-of-malloc/605858#605858. – unwind