- 5
- 0
- 约3.2千字
- 约 4页
- 2023-11-15 发布于陕西
- 举报
C结构体中数据的内存对齐问题
当在C中定义了一个结构类型时,它的大小是否等于各字段(field)大小之和?编译器将如何在内存中放置这些字段?ANSI C对结构体的内存布局有什么要求?而我们的程序又能否依赖这种布局?这些问题或许对不少朋友来说还有点模糊,那么本文就试着探究它们背后的秘密。
首先,至少有一点可以肯定,那就是ANSI C保证结构体中各字段在内存中出现的位置是随它们的声明顺序依次递增的,并且第一个字段的首地址等于整个结构体实例的首地址。比如有这样一个结构体:
struct vector{
int x,y,z;
}s;
int *p, *q, *r;
struct vector *ps;
p = s.x;
q = s.y;
r = s.z;
ps = s;
assert(p q);
assert(p r);
assert(q r);
assert((int*)ps == p);
//上述断言一定不会失败
这时,有人可能会问: 标准是否规定相邻字段在内存中也相邻? 。ANSI C没有做出保证,你的程序在任何时候都不应该依赖这个假设。那这是否意味着我们永远无法勾勒出一幅更清晰更精确的结构体内存布局图?当然不是。我们先来了解一下内存对齐的问题。
许多实际的计算机系统对基本类型数据在内存中存放的位置有限制,它们会要求这些数据的首地址的值是某个数k(通常它为4或
您可能关注的文档
- (8.62)--14.4 C语言程序设计文件操作函数-3.ppt
- (9)--@BIM3墙与幕墙BIM技术应用.doc
- (9)--1-7 C语言数据类型转换.doc
- (9)--3.2 常量C语言程序设计基础.ppt
- (9)--4.2二维数组C语言程序设计基础.pdf
- (9)--4.4 SLS的3D打印技术后处理关键技术.pdf
- (9)--C++程序设计案例教程第5章-习题.pdf
- (9)--ch9 C语言程序设计指针.ppt
- (9)--C语言程序设计(课程思政)教学大纲.doc
- (9)--C语言课件第09章函数.ppt
- 浙江舟山市七校联考2026-2027学年高二上学期11月期中语文试题.docx
- 2026北京丰台高一(上)期中语文(教师版).docx
- 土木力学剪力、弯矩的计算.pptx
- 土木基础工程课件第四章 桩基础.pptx
- Allen试验与桡动脉穿刺技术详解(1).pptx
- 江苏南通市2026—2027学年高三第一次调研考试语文试卷及答案.doc
- 2026年度神经内科护理工作汇报.pptx
- 北京大学物流管理概论2024-2025学年第一学期期末试卷可打印大学生期末复习.pdf
- 北京大学英语口语2024-2025学年第一学期期末试卷可打印复习备考.pdf
- 北京大学英语听力2024-2025学年第一学期期末试卷可打印大学生期末复习.pdf
最近下载
- ZPW2000A小轨道调整表.docx VIP
- 电工电子技术:正弦交流电的基础知识PPT教学课件.pptx
- 08年规范图集有效版本目录.doc VIP
- 1_三色笔记-人力资源.pdf VIP
- 2025-2026学年广东广州五中九年级(上)期中考物理试题含答案.docx VIP
- 《别克GL8豪华商务车娱乐 导航系统手册》.pdf VIP
- MP3MP4里不能缺少的230首歌首首经典首首深入骨髓疯狂的下载吧9.doc VIP
- FusionServer RH2288 V3 服务器 用户指南 01.pdf VIP
- 索尼彩监特丽珑trinitron_pvm14m2mdj维修电路图手册.pdf VIP
- 索尼特丽珑CRT彩监Sony PVM-14M4U,PVM-14M4E,PVM-14M4A,PVM-14M2U,PVM-14M2E,PVM-14M2A,PVM-20M4U,PVM-20M4E,PVM-20M4A,PVM-20M2U,PVM-20M2E 操作指南用户手册与系统菜单.pdf VIP
原创力文档

文档评论(0)