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

mis*_*yes 3 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` */
Run Code Online (Sandbox Code Playgroud)

我有一个结构列表,其中有一个指向某些内容的指针,如果ist被释放,指针也会被释放new_data,是否受到影响?谢谢!

Mar*_*ins 7

内容new_data不会受到影响.在释放"父"数据后它仍然有效.


hmj*_*mjd 5

不,分配的内存new_data不受影响.每个malloc()必须有一个伴随free()释放分配的内存.