假设我有一个带有某些字段的 malloc 结构:
typedef struct myStruct {
int integer;
char* array;
...
}
我 malloc 这个结构的数组,但是,当我想释放它们时,我应该:
/* Loop */
free(myStruct[i])
myStruct[i] = NULL
free(myStruct)
或者我应该释放结构的每个字段,然后是结构本身?
最佳答案
如果你这样调用 malloc:
myStruct *s = malloc(sizeof(myStruct ));
那么您应该在从 malloc 返回的任何指针上调用 free(在本例中称为 s
):
免费;
如果你这样调用 malloc,同样的事情发生:
myStruct *s = malloc(sizeof(myStruct) * NUM_IN_ARRAY);
//...
免费的;
不过,如果您之前将 malloc 指针分配给结构中的 char* 字段,请记住您还需要释放它。
关于c - 如何正确释放 malloc 的结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22130925/