释放全局变量
假设我有一个包含大型结构的全局变量:
typedef struct { char Big[1024] } LARGE; static LARGE x; void main() { free(x); }
当我不再需要它时,我可以安全地从main调用free(x)吗?
不。你没有动态分配x
所以不需要(也不能)释放它。
如果在程序退出之前绝对需要释放内存,请将指针声明为全局,使用malloc
或calloc
按需分配,然后在完成结构时free
它。
static LARGE* x; void main() { x = malloc(sizeof(*x)); // use x free(x); }
不, free
只能用于释放通过调用malloc
分配的对象。
具有静态存储持续时间的对象只能在程序退出时解除分配。