You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

是否存在将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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 16:34:53