释放全局变量



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

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

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

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

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

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

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

具有静态存储时间的对象只能在程序退出时被释放。

相关内容

  • 没有找到相关文章

最新更新