c++_8: c++_内存模型

参看: http://blog.csdn.net/it_yuan/article/details/24651347

内存布局

类中的元素

  1. 成员变量 1. 成员函数 2. 静态成员变量 3. 静态成员函数 4. 虚函数 5. 纯虚函数

影响对象大小的因素

  1. 成员变量 1. 虚函数表指针(_vftptr) 2. 虚基类表指针(_vbtptr) 3. 内存对齐

    • _vftptr、_vbtptr的初始化由对象的构造函数, 赋值运算符自动完成;对象生命周期结束后,由对象的析构函数来销毁。
    • 对象所关联的类型(type_info),通常放在virtual table的第一个slot中。

单一类

空类

这里写图片描述

sizeof(CNull)=1(用于标识该对象)

只有成员变量的类

c++_8: c++_内存模型_第1张图片

nt nVarSize = sizeof(CVariable) = 12

这里写图片描述

只有虚函数的类

c++_8: c++_内存模型_第2张图片

int nVFuntionSize = sizeof(CVFuction) = 4(虚表指针)

这里写图片描述

单一继承

c++_8: c++_内存模型_第3张图片

int nChildSize = sizeof(CChildren) = 12

这里写图片描述

多继承

c++_8: c++_内存模型_第4张图片

int nChildSize = sizeof(CChildren) = 20

c++_8: c++_内存模型_第5张图片

你可能感兴趣的:(c++_8: c++_内存模型)