C++中sizeof问题
对于类和对象
Class A; A obj;
则
sizeof(A)==sizeof(obj)
一个类中,虚函数、成员函数(包括静态与非静态)和静态数据成员都是不占用类对象的存储空间的。
对象大小= 虚函数表指针(4个字节) + 所有非静态数据成员大小 + 对齐字节大小
注意:- 如果没有定义虚函数,则不用计算虚函数表指针
- 对齐字节大小符合规律:
- 结构体变量的首地址能够被其最宽基本类型成员的大小所整除,基本类型是指char、short、int、float、double这样的内置数据类型;
- 结构体每个成员相对于结构体首地址的偏移量(offset)都是成员大小的整数倍,如有需要编译器会在成员之间加上填充字节(internal adding)
- 结构体的总大小为结构体最宽基本类型成员大小的整数倍,如有需要编译器会在最末一个成员之后加上填充字节(trailing padding)。
- 如果结构体的成员是复合类型(如结构体),那么计算最宽基本类型时,是看复合类型的成员,而不是将复合类型看成一个整体。
对于空类,sizeof大小为1
空类同样可以被实例化,每个实例在内存中都有一个独一无二的地址,为了达到这个目的,编译器往往会给一个空类隐含的加一个字节,这样空类在实例化后在内存得到了独一无二的地址.当sizeof的参数是数组名时,计算的是整个数组的存储大小;当sizeof的参数是指针时,计算的是指针的大小(8字节,64位系统)。
参考链接:https://blog.csdn.net/muzilanlan/article/details/27075619
C++中sizeof问题相关推荐
- c++ 中sizeof 与数组形参
c++ 中sizeof 与数组形参 sizeof,返回表达式或类型名所占用的字节数. int x[10];int* p = x;cout << sizeof(x) << end ...
- [转]C++中sizeof(struct)怎么计算?
版权属于原作者,我只是排版. 1. sizeof应用在结构上的情况 请看下面的结构: struct MyStruct { double dda1; char dda; int type; }; 对结构 ...
- C++中sizeof详解
为什么80%的码农都做不了架构师?>>> sizeof并非一个函数,而更像是一个特殊的宏,它是在编译期间求值的.如以下的题目: int a = 0; cout << ...
- C++中sizeof和strlen
sizeof是C/C++中的一个操作符(operator),简单的说其作用就是返回一个对象或者类型所占的内存字节数. strlen所作的仅仅是一个计数器的工作,它从内存的某个 ...
- c/c++中sizeof()、strlen()、length()、size()详解和区别
c/c++中获取字符串长度.有以下函数:size().sizeof() .strlen().str.length(); 一.数组或字符串的长度:sizeof().strlen() 1.sizeof() ...
- C/C++中 sizeof 的用法总结
更多精彩内容请访问我的新博客站点 文章目录 sizeof 运算符 不同数据类型所占的内存大小 共用体的大小 结构体的大小 嵌套结构体的大小 混合结构体的大小 类对象的大小 sizeof 运算符 需要注 ...
- C/C++中 sizeof 详解
摘要: Sizeof的作用非常简单:求对象或者类型的大小.然而sizeof又非常复杂,它涉及到很多特殊情况,本篇把这些情况分门别类,总结出了sizeof的10个特性: (0)sizeof是运算符,不是 ...
- cpp中sizeof与指针
一直不清楚c++的sizeof,现在通过实验得到了一些了解. 1 #include<iostream> 2 3 using namespace std; 4 5 class A{ 6 pr ...
- java中sizeof函数,C语言中,sizeof运算符有什么作用?
满意答案 minwoo1 2014.11.18 采纳率:54% 等级:9 已帮助:415人 通常用来计算一个变量或者类型的大小的,单位是字节 譬如sizeof(char)==1,sizeof(i ...
最新文章
- 回首这一年,其实我还是一样!
- 经典的两数互换【指针】
- 如何招聘一个优秀的产品经理?Google主管的六条心得
- git - 搭建最简单的git server
- Arts 第四周(4/8 ~ 4/14)
- Objective-C Runtime 运行时之四:Method Swizzling
- nginx 超时时间_Linux从入门到放弃 Nginx
- eva每一集片尾曲是谁唱的_evaTV版的片尾曲是不是每集的都不一样啊?
- 团队管理(3)---有效降低企业员工离职率
- L1-047 装睡-PAT团体程序设计天梯赛GPLT
- bzoj 1632: [Usaco2007 Feb]Lilypad Pond(BFS)
- MySql中创建用户以及设置其操作权限
- 安装Eclipse完整版 配上百度云链接
- 善用佳软推荐几个很好用的软件以备使用
- 位移密码加密、解密matlab实现
- android编程如何调整屏幕亮度,Android编程设置屏幕亮度的方法
- android 应用市场 审核速度,安卓市场上传APP软件要多长时间审核?
- macos 微信小助手
- 三星手机S8曝光 新机发布或推迟
- 华为v2服务器系统安装系统,华为服务器RH 2288H v2安装系统
热门文章
- python推荐入门书籍-学python入门看什么书
- python菜鸟编程-Python3 函数
- requests库怎么安装在python中-python安装requests库的实例代码
- 大学python用什么教材-数据结构 Python语言描述 大学教材
- python中的format什么意思中文-Python中.format()常见的用法
- python真的这么厉害吗-Python为什么这么厉害?——Python ,能用来做什么
- python简介怎么写-python简历模板范文
- python内置collections模块的使用
- c#和mysql之间的类型_【SqlServer数据类型、C#数据类型、SqlDbType】对应关系及转换...
- 井下三专两闭锁的内容_矿用高压防爆开关:煤矿井下高低压防爆开关五防电子锁保护装置...