社区
C语言
帖子详情
字节对齐!
退一步海阔天空l忍一时风平浪静
2009-10-21 09:29:40
想问一下各位大虾,字节对齐到底是个什么意思? 它是系统自己去对齐,还是需要人为的,在写程序时去对齐了?
如果是人为的去写对齐,该怎么写了?
谢谢!
...全文
104
4
打赏
收藏
字节对齐!
想问一下各位大虾,字节对齐到底是个什么意思? 它是系统自己去对齐,还是需要人为的,在写程序时去对齐了? 如果是人为的去写对齐,该怎么写了? 谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
slowgrace
2009-10-21
打赏
举报
回复
应该是系统自己去对齐。
写程序时,有时你需要根据系统对齐的规则正确计算变量的字节大小,计算错了会导致错误的运行结果甚至程序崩溃。
awperpvip
2009-10-21
打赏
举报
回复
#pragma pack(1) // 按照1字节方式进行对齐
struct TCPHEADER
{
short SrcPort; // 16位源端口号
short DstPort; // 16位目的端口号
int SerialNo; // 32位序列号
int AckNo; // 32位确认号
unsigned char HaderLen : 4; // 4位首部长度
unsigned char Reserved1 : 4; // 保留6位中的4位
unsigned char Reserved2 : 2; // 保留6位中的2位
unsigned char URG : 1;
unsigned char ACK : 1;
unsigned char PSH : 1;
unsigned char RST : 1;
unsigned char SYN : 1;
unsigned char FIN : 1;
short WindowSize; // 16位窗口大小
short TcpChkSum; // 16位TCP检验和
short UrgentPointer; // 16位紧急指针
};
#pragma pack() // 取消1字节对齐方式
xylicon
2009-10-21
打赏
举报
回复
用pack 和 pop,例如:
#pragma pack(push) //保存对齐状态
#pragma pack(4)//设定为4字节对齐
struct test
{
char m1;
double m4;
int m3;
};
#pragma pack(pop)//恢复对齐状态
昵称很不好取
2009-10-21
打赏
举报
回复
是系统去对齐,如果要设置对齐可以用#pragma pack(n),n为你想对齐的数字
【C语言面试题】请使用宏定义实现
字节对齐
!
最近博主在后台收到一位朋友的咨询,说他最近参加了一场技术面试,有这么一道笔试题: 请使用C语言的宏定义实现一个功能,求得某个整型数M在N
字节对齐
的时,它的值大小。 说明: 1.M是一个非负整数; 2.N是2的整数倍,值可能是1,2,4,8,16等等。 要求: 1.不得使用除法(/); 2.不能使用函数实现,只能用宏实现; 3.自行设计测试用例,明确得出测试用例执行成功与否。 刚好,今天比较清闲,茶余饭后,顺手撸了一把代码: #include <stdio.h> #include
Windows API 所有老式结构体4
字节对齐
,但是64位VBA,Twinbasic弄成了8
字节对齐
,大BUG
Windows 永远要求 4
字节对齐
!**twinBASIC 64 位 默认 8
字节对齐
加 1 个 4 字节 Padding,强制结构回到 4
字节对齐
!必须手动修复对齐32 位 = 4
字节对齐
64 位 = 依然 4
字节对齐
永远不变,没有例外!**如果你愿意,我可以给你做一个《twinBASIC 64 位 API 结构体万能对齐修复模板》以后任何 API 直接套,永不崩溃、永不错位!winBASIC/VB6 64 位 = 默认 8 字节,相当于还弄出事故了?100% 正确。
c语言union字节相同大小不同,C语言的struct/union
字节对齐
C语言的一大优势就是对内存空间的控制,当然,一般情况下对于开发人员来说都是透明的。看一个始终困扰初学者的问题:
字节对齐
!先看四个重要的基本概念:1.数据类型自身的对齐值:对于char型数据,其自身对齐值为1,对于short型为2,对于int,float,double类型,其自身对齐值为4,单位字节。2.结构体或者类的自身对齐值:其成员中自身对齐值最大的那个值。3.指定对齐值:#pragma pac...
深入理解
字节对齐
C语言--
字节对齐
基础知识了解一、操作系统位数、CPU位数、指令集1.操作系统--32-bit(x86)和64-bit(x64)(1)位数(2)64-bit2.处理器CPU位数3.CPU指令集4.寄存器5.关系6.计算机字长(机器字长)7.总结理解
字节对齐
二、
字节对齐
1.什么是
字节对齐
?2.为什么要
字节对齐
①首先,不同硬件平台对存储空间的处理上存在不同;②根本原因在于CPU访问数据的效率问题;③其...
字节对齐
、8
字节对齐
参考博文:参考1 、参考2、参考3 在内存管理中经常使用
字节对齐
来管理分配的内存。 1、原理 2
字节对齐
:要求地址位为2, 4, 6, 8…,地址的二进制最后一位为0(2的1次方)。 4
字节对齐
:要求地址位为4,8,12,16…,地址的二进制最后两位为0(2的2次方)。 8
字节对齐
:要求地址位为8,16,24,32…,地址的最后三位为0(2的3次方)。 16
字节对齐
:要求地址位为16,32...
C语言
70,038
社区成员
243,247
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章