逆向程序分析:C++的一个空类,为什么在内存中占1字节

本文探讨了C++中空类的内存占用问题。虽然理论上空类不包含任何数据成员,但实际占用1字节内存。这是因为C++标准规定对象不能有0大小,以确保不同对象拥有不同地址。当空类带有虚函数时,内存大小变为4字节,这是为了存储虚表指针,以便实现多态调用。
摘要由CSDN通过智能技术生成

普通的空类

空类的定义

空类就是没有任何数据成员的类。

空类的内存大小

按道理讲,没有数据成员,就不会占用内存,那么空类的大小就为0。
但是真实场景下,即便是空类在内存中,也占一个字节。

#include <iostream>
class CPeople
{
   

};

int main()
{
   
    std::cout << "sizeof(CPeople): " << sizeof(CPeople) << std::endl;
    CPeople *v1;
    return 0;
}

输出结果为:

sizeof(CPeople): 1

为了对比,我们建一个新类,里面增加一个数据成员。


#include <iostream>
class A
{
   

};

class B
{
   
    int i;
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值