[英]What is the C++ memory layout of objects/structs etc?
在C ++中,我認為C ++標准與數據成員在內存布局方面的排列方式無關? 我是否正確地認為這取決於有問題的編譯器?
我非常有興趣了解對象和其他C ++實體(結構等)如何在物理內存中表示(我知道列表是節點到節點,數組是連續內存 - 但語言的所有其他方面)。
編輯:學習x86匯編程序有助於此更好地理解C ++嗎?
C ++標准確實指定了一些東西,但遠非一切。
主要規則如下:
public:
/ private:
/ protected:
分隔的類成員對象按照它們聲明的順序在內存中排列,但成員對象之間可能存在未指定數量的填充。 標准指定了更多的部分,但總的來說,剩下的細節實際上歸結為編譯器。
是的,標准沒有說明如何在內存中表示對象。 要了解如何表示規范的C ++對象,請閱讀本書: 內部C ++對象模型。
檢查這些鏈接以了解C ++類的布局(“PCASM”一書中有關於它們如何表示的完整章節)
http://forums.codeguru.com/archive/index.php/t-428671.html http://www.drpaulcarter.com/pcasm/pcasm-book-pdf.zip
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.