閱讀博客http://jonskeet.uk/csharp/memory.html的筆記(個人水平有限,如若翻譯、記錄有誤,請提,謝謝~) 誤區:引用類型保持在堆中,值類型保持在棧中。 問題:前半句正確,後半句“值類型保持在棧中”不正確。 值類型的存儲位置: 1.局部變數都存於棧中,另外引用類型的變 ...
閱讀博客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.所有的靜態變數都存於堆中,而不管定義的是值類型還是引用類型,且不管有多少實例,只保留一份。