,如下面的代码所示:
typedef struct list {
...
...
struct Data *data;
} List;
List* list = (List*)malloc(sizeof(List))
struct Data* data = (struct Data*) malloc(sizeof(struct Data));
.....// here fill the `data`
list->data = data;
....
struct Data* new_data = list->data;
free(list); /* my question is: will this `free` influence `new_data` */
我有一个结构列表,其中有一个指向某些内容的指针,
如果ist被释放,指针也被释放
new_data
怎么样,是否有影响?
谢谢!
答案 0 :(得分:7)
new_data
的内容不会受到影响。在释放“父”数据后它仍然有效。
答案 1 :(得分:5)
不,分配给new_data
的内存不受影响。每个malloc()
必须有一个free()
来释放分配的内存。
答案 2 :(得分:4)
“free()”仅释放“list”内存,而不释放其成员指向的内存。