释放全局变量

Mui*_*uis 0 c malloc c99

假设我有一个包含大型结构的全局变量:

typedef struct {
    char Big[1024]
} LARGE;

static LARGE x;

void main()
{
     free(x);
}
Run Code Online (Sandbox Code Playgroud)

当我不再需要它时,我可以安全地从主电话免费拨打(x)吗?

sim*_*onc 7

不.你没有动态分配,x所以不需要(也不能)释放它.

如果您在程序退出之前绝对需要释放内存,请将指针声明为全局,按需分配,使用malloccalloc,然后free在完成结构时分配.

static LARGE* x;

void main()
{
    x = malloc(sizeof(*x));
    // use x
    free(x);
}
Run Code Online (Sandbox Code Playgroud)

  • 两者是相同的.我只是更喜欢`sizeof(*x)`因为你重构代码并改变`x`的类型肯定会保持正确. (2认同)