内存对齐

为什么需求内存对齐

为了访问未对齐的内存,处理器需要做两次内存访问;

对齐的内存访问仅需要一次访问

什么数据需要内存对齐

结构体、栈中的成员数据

怎么样叫做内存未对齐

一个字或双字操作数跨越了4个字节边界

一个四字操作字跨越了8个字节边界

内存对齐规则

  1. 每个成员按其类型的对齐参数(类型的字节大小)和指定对齐参数(#pragma pack(n)宏指定)中较小的一个对齐;
  2. 结构的长度必须是所用过的所有对齐参数的整数倍,不够补空字节;
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构。C程...
    小辰带你看世界阅读 1,142评论 0 1
  • 什么是内存对齐?先看下面的的结构体: 假设这个结构的成员在内存中是紧凑排列的,假设c1 的地址是0,那么s 的地址...
    guanjianhe阅读 570评论 1 2
  • 源网址[英文] github上有大神翻译了一篇内存对齐的英文文献,我复现了一下过程; 发现其中有个地方有出入(st...
    十曰立阅读 1,206评论 0 3
  • 本次主要讨论三个问题: 什么是内存对齐 内存对齐的好处 如何对齐 内存对齐 内存对齐是一种提高内存访问速度的策略。...
    一个人在路上走下去阅读 1,549评论 0 2
  • 查询内网中关于内存对齐的资料发现,它们往往只谈论一个层面的问题,而不涉及或稍微涉及更高或更低层面的问题;而这对于喜...
    丹丘生___阅读 1,318评论 0 3