类的内存占用大小

在类当中,如果什么都没有,那么该类会占用1个字节的空间(如果有其他的成员变量,那么这1个字节将不会占用)

如果只有成员函数,那么还是只占用1个字节,因为类函数不占用空间

如果有虚函数存在,因为需要虚函数表,所以占用4个字节

成员变量指针类型占用4个字节(32位)或8个字节(64位),int占用4个字节,char占用1个字节

如果出现static变量,因为static变量储存在静态区当中,是一个共享的量,所以不需要为其开内存空间

若需要对齐时,需要补位


总结:

不需要空间:static变量,成员函数。

1个字节:char变量

4个字节:int变量,虚函数

如果类中成员都不需要空间,那么给1个字节

最后进行对齐补位



例题:

在32位的系统下,代码如下:


class  CTest
{
     public :
         CTest():m_chData(‘\0’),m_nData(0){}
        virtual void   mem_fun(){}
     private :
         char  m_chData;
         int  m_nData;
         static  char  s_chData;
};
char  CTest::s_chData=’\0’;


问: 
(1)若按4字节对齐sizeof(CTest)的值是多少?   ans:12
(2)若按1字节对齐sizeof(CTest)的值是多少?   ans:9


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值