我具有以下结构:
我可以简单地拨打免费电话(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";
}
}
}
答案 0 :(得分:1)
malloc
的所有内容都必须free
。
无论您将调用malloc
的结果分配给了什么,都将其传递给free
的调用以释放它。
答案 1 :(得分:1)
请确保您应该释放所有pArr[i].gradeArr
,然后释放所有pArr
。
free
的不同顺序可能会引起一些问题(您可能会松散分配的pArr[i].gradeArr
-s的指针)。