У меня есть небольшой фрагмент кода. Я скомпилировал его с помощью -lmcheck
, так как я пытаюсь отладить код, в котором у меня такая же похожая ошибка.
Я получаю эту ошибку при запуске этого кода:
memory clobbered before allocated block
Может кто-нибудь объяснить причину, почему free (ptr)
выдаст мне эту ошибку?
Как еще я могу освободить указатель?
Спасибо.
#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;
}