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