c - 如何正确释放 malloc 的结构?

标签 c malloc free

假设我有一个带有某些字段的 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/

相关文章:

c - malloc 在 c 中但使用 2d 语法...编译没有答案

c - 如何为 getline 实现 malloc

c++ - 新建、删除、malloc 和免费

c - 释放 C 中零长度数组的已分配内存

c - 缓冲区太小的 sprintf_s

c - 为什么寄存器数组名称可以分配给指针变量而不会出现编译器错误?

c - 如何从这段代码中绘制控制流图?

c - Visual Studio C 中的动态数组

c - 分配二维数组的怪异方式?

c - malloc 和 free 如何处理错误?