Ошибка затирания памяти

У меня есть небольшой фрагмент кода. Я скомпилировал его с помощью -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;
}
5
задан James Raitsev 26 December 2011 в 20:19
поделиться