关闭

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

标签: C++结构体enum
279人阅读 评论(0) 收藏 举报
分类:
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

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:9737次
    • 积分:510
    • 等级:
    • 排名:千里之外
    • 原创:42篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条