Tôi có một đoạn mã nhỏ. Tôi biên soạn nó với -lmcheck
vì tôi đang cố gắng gỡ lỗi mã mà tôi có cùng lỗi tương tự.Lỗi Clobbering bộ nhớ
tôi nhận được lỗi này khi tôi chạy mã này:
memory clobbered before allocated block
Ai đó có thể giải thích lý do tại sao free(ptr)
sẽ ném tôi lỗi này?
Làm cách nào khác để tôi có thể giải phóng con trỏ?
Cảm ơn.
#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;
}
Ngoài ra, hãy xem xét http://stackoverflow.com/questions/605845/do-i-cast-the-result-of-malloc/605858#605858. – unwind