社区
C语言
帖子详情
求助 ——c语言强制对齐的问题。
步道
2013-04-15 09:28:27
#pragma pack(n)
比如
#pragma pack(4)
struct stu{
int a;
char b;
short c;
};
字节是怎么填充的,为什么有空字节,整个结构体的字节是多少?求详解0.0
...全文
333
4
打赏
收藏
求助 ——c语言强制对齐的问题。
#pragma pack(n) 比如 #pragma pack(4) struct stu{ int a; char b; short c; }; 字节是怎么填充的,为什么有空字节,整个结构体的字节是多少?求详解0.0
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
步道
2013-04-15
打赏
举报
回复
我感觉后面的图太给力了 ,图以前看了很迷糊。
sunxingzhe359
2013-04-15
打赏
举报
回复
字节对齐是为了整存争取,想你说的#pragma pack(4)是按四字节进行整存争取,定义的结果体为了整存争取要进行四字节对齐,就是不足4个字节就补充dummy。
Carl_CCC
2013-04-15
打赏
举报
回复
你这个肯定是8,#pragma pack(4) 在32位机器上默认就是这样,4位对齐,你只有#pragma pack(1)才会得到sizeof是7,对齐就是在内存中的最小单位。
buyong
2013-04-15
打赏
举报
回复
http://blog.csdn.net/21aspnet/article/details/6729724
【C 语言】从代码示例入手(十二)
强制
类型
对齐
与位段或位域
在计算机中,内存是以字节为单位进行编址的。 大多数硬件平台为了提高数据访问效率,要求数据存储的起始地址是某个特定值的倍数,这个特定值就是
对齐
边界。
【
C语言
】
强制
转换
常规的数据类型
强制
转换,加入指针后,地址,函数等等的
强制
转换细节和示例程序
C语言
——内存
对齐
总结
1、什么是内存
对齐
? 将程序中的每个数据单元安排在适当的位置上(这是编译器干的事) 2、需要内存
对齐
的原因 不是所有的硬件平台都能访问任意地址上的任意数据(某些硬件平台只能在某些地址处取某些特定类型的数据,否则抛出硬件异常) 可以在相当大的程度上提供程序性能(以空间换时间) 3、内存
对齐
的主要应用范围 对于内存
对齐
问题
,主要存在于struct和union等复合结构在内存中...
强制
类型转换与内存
对齐
问题
小结
C语言
强制
类型转换 概要:
C语言
中,任何一个变量都必须占有一个地址,而这个地址空间内的0-1代码就是这个变量的值。不同的数据类型占有的空间大小不一,但是他们都必须有个地址,而这个地址就是硬件访问的依据,而名字只是提供给程序员的一种记住这个地址的方便一点的方法。但是,不同的变量在机器中都是0-1代码,所以,我们不能简单的
C语言
,指针
强制
类型转换与内存
对齐
.
指针类型
强制
转换,并进行解引用,引起的内存
对齐
问题
. 像*(int*)pData这样的指针类型
强制
转换,用的很多.终于在今天,正式入坑. 此处留下测试场景,备忘. 实例: 测试程序: void TestPointer(void) { BYTE abytBuf[10]={0,1,2,3,4,5,6,7,8,9}; BYTE* pData=&abytBuf[5]; int dwData;...
C语言
70,040
社区成员
243,237
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章