2014-02-17 38 views
0

該語言在什麼時候要求編譯器將本地靜態變量存儲到內存中?它在編譯時嗎?或者在運行時調用包含本地靜態變量的函數?什麼時候存儲在內存中的本地靜態變量?

int* GetMyVariable() 
{ 
    static int A = 50; 
    return &A; 
} 

如果調用GetMyVariable(),我希望只能使用'A'的內存。如果靜態不能像這樣工作,那麼動態分配是我唯一的選擇?謝謝你的時間。

+0

存儲是在編譯時爲其分配的。 – OldProgrammer

回答

1

當是存儲在存儲器中的本地靜態變量

這之前的程序的執行來完成。

(C99,6.2.4p3)「的對象,其識別符被聲明與外部 或內部聯動,或與存儲類說明靜態 具有靜態存儲持續時間,它的壽命是的整個執行 程序和它的存儲值只能在程序啓動前初始化一次, 「。

1

C中的一個靜態變量存在於整個程序的整個執行過程中。因此,您可以隨時安全地獲取該變量的地址。

相關問題