假設我有一個包含一個大結構的全局變量:解放出來全局變量
typedef struct {
char Big[1024]
} LARGE;
static LARGE x;
void main()
{
free(x);
}
我可以安全地調用free(x)的主營當我不需要它了嗎?
假設我有一個包含一個大結構的全局變量:解放出來全局變量
typedef struct {
char Big[1024]
} LARGE;
static LARGE x;
void main()
{
free(x);
}
我可以安全地調用free(x)的主營當我不需要它了嗎?
不,你沒有動態分配x
所以不需要(也不能)釋放它。
如果你絕對需要你的程序退出前釋放內存,聲明指針作爲全球性的,它分配的需求,使用malloc
或calloc
,然後free
它,當你與結構完成。
static LARGE* x;
void main()
{
x = malloc(sizeof(*x));
// use x
free(x);
}
沒有,free
只能用於刪除已通過對malloc
呼叫分配的對象。
靜態存儲持續時間的對象只能在程序退出時解除分配。
C沒有全局變量。我相信你指的是具有靜態存儲持續時間的變量。 – Sebivor