struct 大小?

clockwise3 2004-11-21 11:43:01
typedef struct
{
double dx;
char cx;
}
test;
int main(int argc, char* argv[])
{
int i = sizeof(test);
return 0;
}

执行后i值不是12 却是16,何解?
...全文
94 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
greenteanet 2004-11-21
  • 打赏
  • 举报
回复
其实楼主的问题是内存对齐问题,您可以到http://dev.csdn.net/article/article/48/48195.shtm看看,里面详细讲了为什么会出现内存对齐。
ice_lover 2004-11-21
  • 打赏
  • 举报
回复
与编译器有关,要内存补齐,按楼主给出的补齐结果应为12。但整个struct的大小应为结构中size最大元素的倍数,所以再补4结果为16
zwzzj 2004-11-21
  • 打赏
  • 举报
回复
应该与编译器有关.
ma100 2004-11-21
  • 打赏
  • 举报
回复
在搜索中查询 内存对齐
clockwise3 2004-11-21
  • 打赏
  • 举报
回复
不过如果写成
typedef struct
{
char cx;
double dx;
}
test;
int main(int argc, char* argv[])
{
int i = sizeof(test);
return 0;
}

执行后i值是12了 怎么用内存对齐解释呢?

69,375

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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