C++类对象内存大小的计算?

class Point{ private: short count; int x,y; public: Point(int xx, int yy)…
关注者
74
被浏览
10,786

5 个回答

你可以参考下我的这篇博客:

<关于内存对齐的那些事> darkc.at/about-data-str

敢问题主用的什么牌子的编译器?

这是无virtual的

这是有virtual的

其中内存对齐部分参考《深度探索c++对象模型》


关于vptr

我认为是这样的

count(2)+2(对齐)+x(4)+y(4)+vptr(4)=16

因为是win32程序故内存对齐应该4的倍数,所以sizeof结果应该为16。

至于24的版本,我认为题主使用的编译器中的vptr为8byte,内存对齐也为8的倍数。

24=vptr(8)+count(2)+2(对齐)+x(4)+y(4)+4(对齐)

@vczh @魏凡丁