释放全局变量

时间:2013-01-20 21:12:55

标签: c malloc c99

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

typedef struct {
    char Big[1024]
} LARGE;

static LARGE x;

void main()
{
     free(x);
}

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

2 个答案:

答案 0 :(得分:7)

没有。您没有动态分配x,因此不需要(也不能)释放它。

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

static LARGE* x;

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

答案 1 :(得分:4)

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

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