首页 解析C语言结构体对齐(内存对齐问题).docx

解析C语言结构体对齐(内存对齐问题).docx

解析C语言结构体对齐(内存对齐问题).docx

上传者: june玉婷 2017-03-20 评分1 评论0 下载0 收藏0 阅读量189 暂无简介 简介 举报

简介:本文档为《解析C语言结构体对齐(内存对齐问题)docx》,可适用于源代码领域,主题内容包含解析C语言结构体对齐(内存对齐问题)  结构体对齐也是老生常谈的话题了。基本上是面试题的必考题。内容虽然很基础但一不小心就会弄错。写出一个struc符等。

解析 C 语言结构体对齐 ( 内存对齐问题 ) 结构体对齐也是老生常谈的话题了。基本上是面试题的必考题。内容虽然很基础,但 一不小心就会弄错。写出一个 struct ,然后 sizeof ,你会不会经常对结果感到奇怪 ? sizeof 的结果往往都比你声明的变量总长度要大,这是怎么回事呢 ? 下面让我们一起来学 习一下相关的知识吧 ! 解析 C 语言结构体对齐 ( 内存对齐问题 ) 开始学的时候,也被此类问题困扰很久。其实相关的文章很多,感觉说清楚的不多。 结构体到底怎样对齐 ? 有人给对齐原则做过总结,具体在哪里看到现在已记不起来,这里引用一下前人的 ( 在没有 #pragmapack 宏的情况下 ) 原则 1 、数据成员对齐规则:结构 (struct 或联合 union) 的数据成员,第一个数据成 员放在 offset 0 的地方,以后每个数据成员存储的起始位置要从该成员大小的整数倍 开始 ( 比如 int 32 位机为 4 字节,则要从 4 的整数倍地址开始存储 ) 原则 2 、结构体作为成员:如果一个结构里有某些结构体成员,则结构体成员要从其 内部最大元素大小的整数倍地址开始存储。 (structa 里存有 structb b 里有 char int double 等元素,那 b 应该从 8 的整数倍开始存储。 ) 原则 3 、收尾工作:结构体的总大小,也就是 sizeof 的结果,必须是其内部最大成 员的整数倍,不足的要补齐。 这三个原则具体怎样理解呢 ? 我们看下面几个例子,通过实例来加深理解。

第1页

职业精品

(汽车)产品营销策划书范文.doc

HH牙膏营销方案策划书.doc

加班管理人力资源考勤管理系统方案.doc

物品采购管理制度-正式.doc

用户评论

0/200
    暂无评论
上传我的资料

精彩专题

相关资料换一换

资料评价:

/ 1
所需积分:0 立即下载

意见
反馈

返回
顶部