是否存在将vbptr嵌入vfptr的C++编译器?附MSVC内存布局测试
关于将vbptr嵌入vfptr的内存布局优化疑问
我不清楚如何查看GCC中的内存布局,以下测试结果来自MSVC。
我考虑若将vbptr(虚基类表指针)嵌入vfptr(虚函数表)中,每个对象可节省4字节内存,但每次获取vbptr都需解引用vfptr。请问是否有编译器尝试过该实现?或者我的思路存在错误?
测试代码:
class A { public: int a; virtual void Foo() {} }; class B :virtual public A { public:int b; virtual void Bar(){} }; sizeof(B) = 20;
MSVC下的内存布局:
class B size(20): -------+---------- 0 | {vfptr} 4 | {vbptr} 8 | b -------+---------- -------+----------(virtual base A) 12 | {vfptr} 16 | a -------+---------- B::$vbtable@: -------+---------- 0 | -4 1 | 8 (Bd(B+4)A) -------+----------
内容的提问来源于stack exchange,提问作者akanesora
相关产品推荐
相关产品推荐

