Tôi không hiểu tại sao, trong mã này, cuộc gọi đến "tự do" gây ra một lỗi segmentation:Malloc, miễn phí và phân đoạn lỗi
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char *char_arr_allocator(int length);
int main(int argc, char* argv[0]){
char* stringa = NULL;
stringa = char_arr_allocator(100);
printf("stringa address: %p\n", stringa); // same address as "arr"
printf("stringa: %s\n",stringa);
//free(stringa);
return 0;
}
char *char_arr_allocator(int length) {
char *arr;
arr = malloc(length*sizeof(char));
arr = "xxxxxxx";
printf("arr address: %p\n", arr); // same address as "stringa"
return arr;
}
Ai đó có thể giải thích cho tôi?
Cảm ơn, Segolas
Cũng có một cái nhìn tại http://www.hpl.hp.com/personal/Hans_Boehm/gc/ nó thực sự tốt đẹp. –