C++中类对象的内存布局和占用空间

来源:互联网 发布:大学生it就业 编辑:程序博客网 时间:2024/05/22 05:06
1.非静态成员变量总合。

2.编译器为了CPU计算,作出的数据对齐处理。(可用#pragma pack(n)来设定变量的对齐方式)

3.为了支持虚函数,产生的额外负担。


//例子:#pragma pack(2)class BU{    int number;//4    union UBffer    {        char buffer[13];        int number;    }ubuf;//13+1    void foo(){}//0    typedef char*(*f)(void*);//0    enum{hdd,ssd,blueray}disk;//4}bu;//sizeof(bu)的值为22。


重点:

空类在C语言中占0字节,在C++中占1字节。

sizeof(void):编译错误或者为1。sizeof(void*):指针大小。




0 0