sizeof到底该怎么算
2015-02-27 16:04
316 查看
首先对一个空类的sizeof,大家都知道不是0,一般是1,那么为什么呢,在早期的C++编译器中,这个值是0的,但是这样会造成创建的对象与它后面的对象有相同的地址,所以目前大多数编译器中这个值是1。
当不为空时,我们来看一个实例:
问sizeof(A)是多少
首先对于类的成员分配空间是字节对齐的,因此占8字节;对于虚函数,不管有几个虚函数,都只建立一张虚函数表,类中需要一个指针,因此占4字节;对于普通函数,是存储在栈中,不计入sizeof计算的空间;static类型的成员由类的所有对象共享,也不计入sizeof计算的空间。
因此答案是12(32编译器中)。
当不为空时,我们来看一个实例:
class A { int a; char b; public: virtual funA(); virtual funB(); funC(); static funD(); static int c(); };
问sizeof(A)是多少
首先对于类的成员分配空间是字节对齐的,因此占8字节;对于虚函数,不管有几个虚函数,都只建立一张虚函数表,类中需要一个指针,因此占4字节;对于普通函数,是存储在栈中,不计入sizeof计算的空间;static类型的成员由类的所有对象共享,也不计入sizeof计算的空间。
因此答案是12(32编译器中)。
相关文章推荐
- 侃侃程序员的个人努力与前途问题 程序员到底怎么了
- java中单片redis到底应该怎么用,实践出真理
- 到底是怎么传参的?
- 程序员到底怎么了 如何成为一个合格的程序员
- 谷歌到底怎么绕过浏览器的隐私设定
- 1029. 旧键盘(20)到底怎么错了啊啊啊啊啊
- 几十万码农卡死在这个地方,Java的数据结构到底该怎么学
- 十连跌!这个一线城市的房价到底怎么了?
- C#、ASP.NET主键到底怎么写比较好?ID?Id?id?IDs?Ids?ids?欢迎大家指点
- 不懂算法的我,到底怎么让APP快点AI起来?
- 来讲讲Git这个玩意到底该怎么用?
- 简单实现C中sizeof函数是怎么实现的(面试的时候可能用到)
- Hadoop到底能做什么?怎么用hadoop?
- 到底怎么活啊!
- 【转】程序员到底怎么鸟
- 泰坦尼克的进一步学习---特征工程到底怎么做?
- Uber到底挣钱不挣钱,听听司机怎么说
- 产品经理想做好数据可视化表达,到底该怎么选图表?
- 库存扣多了,到底怎么整
- 错误:数据提供程序或其他服务返回E_FAIL状态 到底怎么回事呢?