很简单,但是也很难,怎么回事啊???高手救命

myyxr 2003-11-21 11:29:44
struct APPX_CMD_MAIN {
unsigned char Command_Id;
char param[20];
__int32 squence;
__int32 app_msg_id;
}
APPX_CMD_MAIN submit;
TRACE ( "submit space len is: %d\n", sizeof ( submit ) );


sizeof ( submit ) 应该是29,是吗?
但是奇怪啊,结果是32 !!!!!!
去掉 unsigned char Command_Id;
结果就变成28了,为什么啊????????????
...全文
25 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
cyj2008 2003-11-21
  • 打赏
  • 举报
回复
学过计算机组成原理的话,你就知道为什么会这样了.
cyj2008 2003-11-21
  • 打赏
  • 举报
回复
在32编译器下,默认是short类型的变量从偶地址开始,int类型(或以上)变量从能被4整除的地址开始。

变量名 变量起始地址 长度(byte)
Command_Id A+0 1
Param[20] A+1 20
空出来 3
squence A+24 4 //必须从4倍地址开始
app_msg_id A+28 4
---------------------------------
32 byte

当去掉变量Command_Id之后:
变量名 变量起始地址 长度(byte)
Param[20] A+0 20
squence A+20 4 //必须从4倍地址开始
app_msg_id A+24 4
---------------------
28 byte


33,009

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧