释放全局变量

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

typedef struct { char Big[1024] } LARGE; static LARGE x; void main() { free(x); } 

当我不再需要它时,我可以安全地从main调用free(x)吗?

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

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

 static LARGE* x; void main() { x = malloc(sizeof(*x)); // use x free(x); } 

不, free只能用于释放通过调用malloc分配的对象。

具有静态存储持续时间的对象只能在程序退出时解除分配。