閱讀部落格http://jonskeet.uk/csharp/memory.html的筆記(個人水平有限,如若翻譯、記錄有誤,請提,謝謝~)
誤區:引用型別保持在堆中,值型別保持在棧中。
問題:前半句正確,後半句“值型別保持在棧中”不正確。
值型別的儲存位置:
1.區域性變數都存於棧中,另外引用型別的變數(不是指引用型別本身,而是指定義的那個用來存放引用地址的變數)也存於棧中;
2.全域性變數存於堆中,和物件存放在一起,同樣的生命週期;
3.值型別的例項變數和值型別的變數位置相同。(有點不通順,翻譯水平不行,原文:Instance variables for a value type are stored in the same context as the variable that declares the value type.)例如:定義一個結構變數,若為全域性變數,則結構內部的值型別遵循第2條,反之則遵循第1條;
4.所有的靜態變數都存於堆中,而不管定義的是值型別還是引用型別,且不管有多少例項,只保留一份。