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 に答える