sizeof的用法与字节对齐
2024-08-24 02:17:24
一、sizeof是什么?
sizeof是一种预编译处理,不是函数,不是一元表达式。也即,作用阶段在编译期。
二、功能是什么?
sizeof返回变量或类型的字节数。
三、调用方式
sizeof(object):对对象使用
sizeof(typename):对类型使用
四、返回值情况归类
其实质是考察各个类型所占内存的相关知识
基本数据类型:
char(unsigned) 1
short(unsigned) 2
int(unsigned) long float 4
double 8
函数:
返回值的类型
指针:
32位系统 4
64位系统 8
数组:
数组的实际大小
五、重点:对齐问题下的sizeof
各类型对界与其字节数一致。也即起始地址需要被对界整除。
另外,对于复合数据类型,如union、struct、class,类型字节数是成员最大对界的整数倍。
sizeof(union)
基本大小由最大的元素决定,但最终大小为最大对界的整数倍
union u1
{
double a;
int b;
}; // union u2
{
char a[];
char b;
}; // union u3
{
char a[];
int b;
}; // 16,int类型的对界为4
sizeof(class)
包含虚函数的类,保存了指向虚函数表的指针,而一个指针为4个字节。
sizeof(struct) 略微复杂
struct类型的对界为成员中的最大对界,也即struct类型的字节数是对界的整数倍,同时起始地址也是对界的整数倍。
struct nalign
{
//基本成员类型
char a; //起始地址:0 占空空间:1
int b; //起始地址:4 占用空间:4
short c; //起始地址:8 占用空间:2
//总空间为10
//struct为4对界 总空间补全到12
}; struct nalign1
{
//struct类型作为成员的情形
//
char a; //对界:1 起始地址:0 占用空间:1
nalign b; //对界:4 起始地址:4 占用空间 12
//总空间为16
//struct为对界4 总空间补全到16
}; int main(int argc, char **argv)
{
cout << sizeof(nalign) << endl; // 输出"12"
cout << sizeof(nalign1) << endl; //输出"16"
}
总结:
在复合类型中,成员变量的对界为成员起始地址的整数倍;复合类型的对界为成员变量的最大对界;复合类型的大小为其对界的整数倍。
最新文章
- [示例] Firemonkey TGridLayout &; TGridPanelLayout 布局
- MyEclipse做一个注册页面,需要注意的地方。
- c++中this指针的用法
- Groonga 3.0.8 发布,全文搜索引擎
- 警惕USB键盘记录器
- 【229】Raster Calculator - 栅格计算器
- Git之 基本常用命令
- ASP.NET MVC3 系列教程 - Razor视图引擎基础语法
- MBI 跨国网络传销 金字塔诈骗 解密
- spring3 jsp页面使用<;form:form modelAttribute=";xxxx"; action=";xxxx";>;报错,附连接数据库的spring MVC annotation 案例
- QGis(三)查询矢量图层的要素属性字段值(转载)
- 201521123038 《Java程序设计》 第七周学习总结
- http://zthdd.bokee.com/6189963.html
- 升级SCCM 2012R2 SP1故障解决
- UOJ#449. 【集训队作业2018】喂鸽子 min-max容斥,FFT
- Null hypothesis TypeⅠerror Type Ⅱ error
- Delphi中break,exit,abort跳出循环的比较
- 利用adb 打开手机应用程序
- Redis+Keepalived实现高可用
- 优秀UX设计师的八条黄金法则
热门文章
- Unity 头发随动效果
- PCM音量控制
- 使用Json Template在Azure China创建ARM类型的虚拟机
- Qt中如何用QImage::Format_Indexed8表示灰度图
- Java基础--压缩和解压缩gz包
- 查看,修改ceph节点的ceph配置命令
- 01-19asp.net网站--关于“应用程序中的服务器错误(需添加";Jquery";ScriptRescourseMapping)”
- 回调函数(callback)经典解答
- [Python Study Notes]七彩散点图绘制
- ORACLE体系结构一 (实例(instance))--ORACLE_SID