3

如以下代码所示:

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,是否受到影响?谢谢!

4

3 回答 3

7

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

于 2013-05-15T14:36:36.790 回答
5

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

于 2013-05-15T14:36:40.733 回答
4

“free()”只释放“列表”内存,而不是它的成员指向的内存。

于 2013-05-15T14:52:38.300 回答