深度探索C++ 对象模型(2)-类的对象的内存大小
生活随笔
收集整理的這篇文章主要介紹了
深度探索C++ 对象模型(2)-类的对象的内存大小
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. Question: 32bit機器 1個指向地址1000的指針的大小是多少?
| 整數指針 | 1000~1003(32bit整數是4-bytes) |
| void*指針 | 不確定 |
2. 類的對象的內存大小
.基類
- 所有非靜態數據成員的大小的總和。
- 由內存對齊而填補的內存大小。
- 為了支持virtual有內部產生的額外負擔。
.繼承類
- 基類的內存大小+本身數據成員的大小
代碼驗證
class ZooAnimal { public:ZooAnimal() {}virtual ~ZooAnimal() {}virtual void rotate() {} protected:int loc;char* psz;int nLen; };測試代碼:
void test_ZooAnimal() {ZooAnimal za();//在32位計算機上所占內存為16字節 cout << "對象za的內存大小:" << sizeof(ZooAnimal) << endl; }3.The answner to the question on last page:“空類組成的繼承層次中,每個類對象的大小是多大?”
- 如下代碼輸出結果: 答案是1
- 如下代碼輸出結果:
對象X的內存大小:1
對象Y的內存大小:4
對象Z的內存大小:4
對象A的內存大小:8
【引用】
[1]<<深度探索C++ 對象模型 Inside The C++ Object Model >> Stanley B.Lippman 候捷 譯
[2] 代碼地址 https://github.com/thefistlei/cplusStudy.git
總結
以上是生活随笔為你收集整理的深度探索C++ 对象模型(2)-类的对象的内存大小的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深度探索C++ 对象模型(1)-三种对象
- 下一篇: 深度探索C++ 对象模型(2)-类的对象