内存对齐———结构体
来源:互联网 发布:java面向对象程序设计 编辑:程序博客网 时间:2024/05/20 04:14
对齐准则:
- 1) 数据类型自身的对齐值:char型数据自身对齐值为1字节,short型数据为2字节,int/float型为4字节,double型为8字节。
- 2) 结构体或类的自身对齐值:其成员中自身对齐值最大的那个值。
- 3) 指定对齐值:#pragma pack (value)时的指定对齐值value。
- 4) 数据成员、结构体和类的有效对齐值:自身对齐值和指定对齐值中较小者,即有效对齐值=min{自身对齐值,当前指定的pack值}。
其中,有效对齐值N是最终用来决定数据存放地址方式的值。有效对齐N表示“对齐在N上”,即该数据的“存放起始地址%N=0”。而数据结构中的数据变量都是按定义的先后顺序存放。第一个数据变量的起始地址就是数据结构的起始地址。结构体的成员变量要对齐存放,结构体本身也要根据自身的有效对齐值圆整(即结构体成员变量占用总长度为结构体有效对齐值的整数倍)。
结构体字节对齐的细节和具体编译器实现相关,但一般而言满足三个准则:
1) 结构体变量首地址能够被其最宽基本类型成员的大小所整除; 2) 结构体每个成员相对结构体首地址的偏移量(offset)都是成员大小的整数倍,如有需要编译器会在成员之间加上填充字(internal adding); 3) 结构体的总大小为结构体最宽基本类型成员大小的整数倍,如有需要编译器会在最末一个成员之后加上填充字节{trailing padding}。
0 0
- 内存对齐———结构体
- CSAPP读书笔记——结构体的内存对齐
- 知识点总结——结构体大小、内存对齐方式
- 结构体对齐(内存对齐)
- 内存对齐.结构体对齐
- 内存对齐.结构体对齐
- 内存对齐.结构体对齐
- 内存对齐 结构体对齐
- 内存对齐.结构体对齐
- 内存对齐.结构体对齐
- 内存对齐.结构体对齐
- 内存对齐.结构体对齐
- 内存对齐.结构体对齐
- C++ —内存对齐
- 最透彻的讲解结构体成员内存对齐问题——透彻理解哦
- 关于 内存对齐 && sizeof 的介绍 2 —— 结构体
- C语言结构体的大小——内存对齐和位域的使用
- 关于 内存对齐 && sizeof 的介绍 2 —— 结构体(改)
- 分析AJAX抓取今日头条街拍美图(上)
- 【C#】sqlitehelper类
- [Leetcode] #234 Palindrome Linked List
- 进程和线程的区别和linux运行状态查看简单介绍
- C++的STL之find_first_of
- 内存对齐———结构体
- 欢迎使用CSDN-markdown编辑器
- servlet request getHeader("x-forwarded-for") 获取真实IP
- C#网络电视精灵系统
- [IOS APP]窥破金瓶梅-西门庆真的很好色吗
- Windows下ActiveMQ下载、安装部署
- 真正从零开始,TensorFlow详细安装入门图文教程!
- 【BZOJ 1864】【ZJOI 2006】三色二叉树【树型DP】
- 对spring web启动时IOC源码研究