成份:在堆棧上分配對象的好處?
- 兩種語言 - 如C++和C#
- 類型方式比更復雜的只是一個
Point
有兩個成員(字段x
和y
)
在C#這樣類型將被定義爲引用類型,迫使它將其始終分配在堆上。在C++中,分配由使用來定義,而不是由類型定義來定義,因此可以在堆棧中分配它。
這樣做的好處是RAII模式,可以在對象超出範圍後自動清除數據。在C#中,您必須使用using
作爲明確的「清理範圍」(這也是由於非確定性GC)。
第二我知道的是速度 - 堆棧訪問速度更快。
我的問題是這樣的 - 是否有任何(命名一個就足夠了)其他真正的好處(除了RAII和速度)在堆棧上分配複雜對象的能力(比如在C++中) C#)?
真實 - 我更希望找到一些「始終處於堆上」的方法,因爲RAII解決方案畢竟具有不同的語法。
這個問題不涉及C#中的值類型(結構)!這是跨語言的比較。
事情是,對於一切都很好的事情,RAII是有點全面的。您還沒有提到異常安全性,這是帶有異常的RAII(假設代碼在某個級別的try塊中運行)。 – juanchopanza
@ juanchopanza,謝謝,但它已經基於RAII,並且指出了C#世界中的對應部分。 – greenoldman