Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C.动态结构和构件_C_Data Structures_Dynamic - Fatal编程技术网

C.动态结构和构件

C.动态结构和构件,c,data-structures,dynamic,C,Data Structures,Dynamic,目前我正在为一个结构动态分配内存,之后我将为它的一个成员动态分配内存。我的问题是我是否也应该释放成员,还是只释放结构以及为什么 #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(siz

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

#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;
}
#包括
结构测试{
字符*测试单元成员;
};
int main(){
结构测试*new_测试;
//为结构及其成员分配内存
新的_测试=(测试*)malloc(sizeof(测试));
新的测试->测试成员=(字符*)malloc(80);
//释放结构成员和结构
免费(新测试->测试成员);
免费(新考试);
返回0;
}

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

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


那么您的代码是正确的

这是否意味着我不会有任何双重释放问题?谢谢,谢谢,刚刚发现了铸造的缺点