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