如果指针被释放,它指向的内容怎么样?它会受到影响吗?

时间:2013-05-15 14:34:52

标签: c pointers

,如下面的代码所示:

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怎么样,是否有影响? 谢谢!

3 个答案:

答案 0 :(得分:7)

new_data的内容不会受到影响。在释放“父”数据后它仍然有效。

答案 1 :(得分:5)

不,分配给new_data的内存不受影响。每个malloc()必须有一个free()来释放分配的内存。

答案 2 :(得分:4)

“free()”仅释放“list”内存,而不释放其成员指向的内存。