該語言在什麼時候要求編譯器將本地靜態變量存儲到內存中?它在編譯時嗎?或者在運行時調用包含本地靜態變量的函數?什麼時候存儲在內存中的本地靜態變量?
int* GetMyVariable()
{
static int A = 50;
return &A;
}
如果調用GetMyVariable(),我希望只能使用'A'的內存。如果靜態不能像這樣工作,那麼動態分配是我唯一的選擇?謝謝你的時間。
該語言在什麼時候要求編譯器將本地靜態變量存儲到內存中?它在編譯時嗎?或者在運行時調用包含本地靜態變量的函數?什麼時候存儲在內存中的本地靜態變量?
int* GetMyVariable()
{
static int A = 50;
return &A;
}
如果調用GetMyVariable(),我希望只能使用'A'的內存。如果靜態不能像這樣工作,那麼動態分配是我唯一的選擇?謝謝你的時間。
當是存儲在存儲器中的本地靜態變量
這之前的程序的執行來完成。
(C99,6.2.4p3)「的對象,其識別符被聲明與外部 或內部聯動,或與存儲類說明靜態 具有靜態存儲持續時間,它的壽命是的整個執行 程序和它的存儲值只能在程序啓動前初始化一次, 「。
C中的一個靜態變量存在於整個程序的整個執行過程中。因此,您可以隨時安全地獲取該變量的地址。
存儲是在編譯時爲其分配的。 – OldProgrammer