VS查看C++类的内存分布、初步了解类的内存分布
生活随笔
收集整理的這篇文章主要介紹了
VS查看C++类的内存分布、初步了解类的内存分布
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在VC++項目屬性,如下圖紅線位置,輸入?/d1 reportAllClassLayout ,確定;
之后,編譯代碼,即可查看類的內存分布;
寫一個簡單C++類,生成,在輸出窗口可看到如下;
?
? ? 普通類的排布方式,成員變量依據聲明的順序進行排列(類內偏移為0開始);?
繼承出一個類,增加一個變量c;生成;看到類的內存分布如下;
?
? ? 子類繼承了父類的成員變量,在內存排布上,先是排布了父類的成員變量,接著排布子類的成員變量;?
寫一個簡單類,增加一個虛函數;生成;則看到如下;
?
? ? ?這時內存結構分成了兩個部分,上面是內存分布,下面是虛表;
? ? ?VS所帶編譯器是把虛表指針放在了內存的開始處(0地址偏移),然后再是成員變量;
? ? 下面生成了虛表,緊跟在&test1_meta后面的0表示,這張虛表對應的虛指針在內存中的分布;下面列出了虛函數,左側的0是這個虛函數的序號,這里只有一個虛函數,只有一項,如果有多個虛函數,會有序號為1,為2的虛函數列出來;
?
總結
以上是生活随笔為你收集整理的VS查看C++类的内存分布、初步了解类的内存分布的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 龙格库塔法基本C程序
- 下一篇: 了解C++类的大小和类变量的字节对齐