從編程語言語用,由Scott一定要初始化靜態對象嗎?
對象的壽命通常對應於三個主要 存儲分配機制之一,用於管理對象的空間:
靜態對象給出的絕對地址這在整個程序的執行過程中保留下來。
棧對象分配和釋放在最後的,第一個出的順序,通常與子程序調用和返回結合。
- 堆對象可以分配,並在任意時間釋放。他們需要更通用(並且昂貴)的存儲管理算法 算法。
例如,在C,靜態對象必須用常量表達式(表達式可在編譯時被評估)初始化。
我不知道它是否在其他語言的情況下,甚至什麼其他語言也有靜態的對象。
一般來說,必須初始化靜態對象嗎?初始化時,它們是否必須使用可在編譯時評估的表達式進行初始化?
通過初始化,我的意思是顯式或隱式的(即自動語言實現完成),而不是uninitailziation。 所以要重新說明我的問題:通常,程序或編譯器可以將靜態對象保持爲未初始化狀態?
謝謝。
簡短答案是'不'。但是他們可能應該在程序的後面避免未初始化的問題。 – Serge
不完全正確,一個'static'變量默認被初始化爲0(或者等價),'non static'變量應該被初始化,否則會在你的內存棧中產生一些垃圾值。 –