您现在的位置是:网站首页 -> 代码相关 文章内容
关于C++中类的占用内存大小-itarticl.cc-IT技术类文章记录&分享
发布时间: 9年前【代码相关】 136人已围观【返回】
所有的函数都是存放在代码区的,不管是全局函数,还是成员函数。sizeof访问的程序的数据段。
1. 类的大小为类的非静态成员数据的类型大小之和,也 就是说静态成员数据不作考虑。
2. 普通成员函数与sizeof无关。
3. 静态成员并不属于某个对象,sizeof取的是对象大小。
4. 虚函数由于要维护在虚函数表,所以要占据一个指针大小,也就是4字节。
5. 空类的sizeof为1。因为一个空类也要实例化,所谓类的实例化就是在内存中分配一块地址,每个实例在内存中都有独一无二的地址。同样空类也会被实例化,所以编译器会给空类隐含 的添加一个字节,这样空类实例化之后就有了独一无二的地址了。所以空类的sizeof为1。
6. Sizeof(类名)是在编译时就计算了的,一个类定义了,它所占的内存编译器就已经知道了,这时只是得到它占用的大小,并没有分配内存操作 。也可以这样想:编译器肯定知道大小了,这与分配内存空间无关,知道大小了,以后实例化了才能知道要分配多大。
类是抽象的,是不占有内存的,可是如果类生成实例那么将会在内存中分配一块内存来存储这个类。
7. 类的总大小也遵守类似class字节对齐的,调整规则。
8. 静态成员函数与一般成员函数的唯一区别就是没有this指针,因此不能访问非静态数据成员。
附:字节对齐
1.数据类型自身的对齐值:
对于char型数据,其自身对齐值为1,对于short型为2,对于int,float,double类型,其自身对齐值为4,单位字节。
2.结构体或者类的自身对齐值:其成员中自身对齐值最大的那个值。
3.指定对齐值:#pragma pack (value)时的指定对齐值value。
4.数据成员、结构体和类的有效对齐值:自身对齐值和指定对齐值中小的那个值。
发布时间: 9年前【代码相关】136人已围观【返回】【回到顶端】
很赞哦! (1)
下一篇:C++内存管理
相关文章
点击排行

站长推荐

猜你喜欢
站点信息
- 建站时间:2016-04-01
- 文章统计:728条
- 文章评论:82条
- QQ群二维码:扫描二维码,互相交流
