带有char的免费结构体**

时间:2018-07-21 16:03:20

标签: c free

我具有以下结构:

我可以简单地拨打免费电话(pArr)吗?我还需要释放我分配的gradeArr吗?我该怎么办?

 struct person {
     char * name;
     int age;
     char ** gradeArr;

 }

  // array of structs
  struct person * pArr;

  void function(){
      pArr = malloc(5 * sizeof(*pArr));
      int i;
      for (i = 0; i < 5; i++){
          pArr[i].gradeArr = (char**)malloc(10 * sizeof(char*));
          int j;
          for(j = 0; j < 10; j++){
              pArr[i].gradeArr[j] = "B";

          }

      }

  }

2 个答案:

答案 0 :(得分:1)

malloc的所有内容都必须free

无论您将调用malloc的结果分配给了什么,都将其传递给free的调用以释放它。

答案 1 :(得分:1)

请确保您应该释放所有pArr[i].gradeArr,然后释放所有pArr

free的不同顺序可能会引起一些问题(您可能会松散分配的pArr[i].gradeArr-s的指针)。