1

目前我正在为一个结构动态分配内存,之后我正在为它的一个成员动态分配内存。我的问题是我也应该释放成员,还是只释放结构,为什么?

#include <stdlib.h>

struct test{
  char *test_member;
};

int main(){

  struct test *new_test;

  // Allocating memory for structure and its member
  new_test = (test*)malloc(sizeof(test));
  new_test->test_member = (char*)malloc(80);

  // Freeing struct member and struct
  free(new_test->test_member);
  free(new_test);

  return 0;
}
4

1 回答 1

1

由于结构中的变量已分配,因此您需要先释放它们,然后释放结构。

它与 2D 数组 A 的动态分配相同。当您想释放“A”时,您需要先释放 A[i],然后再释放 A 以防止内存泄漏。

所以你的代码是正确的

于 2020-10-10T12:27:47.063 回答