结构体占用内存的问题

TwenteMaster 2012-11-21 09:16:51

struct type
{
int i;
char c;
double d;
};

针对这个结构体,如果用sizeof,得到的答案是16

struct type
{
int i;
double d;
char c;
};

如果换成这样的话,答案就成了24
这是为什么呀
...全文
142 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Panda_熊猫 2012-11-22
  • 打赏
  • 举报
回复
结构体每个成员相对于结构体首地址的偏移量都是基本类型成员大小的整数倍 结构体的总大小为结构体最宽基本类型成员大小的整数倍
whizer 2012-11-22
  • 打赏
  • 举报
回复
1) int 4 | char 1 | double 8 int+char=5,但是边界要与double 8对齐,所以需要多占3个字节,4+1+3 = 8 总字节数:4+1+3 | +8 = 16 2) int 4 | double 8 | char 1 还是要对齐问题,int 要对齐需要增加4个字节, 后面的char要对齐需要增加7个字节 总字节数:4+4 | +8 | +1+7 = 24
newtee 2012-11-21
  • 打赏
  • 举报
回复
字节对齐 这个要学习一下
AnYidan 2012-11-21
  • 打赏
  • 举报
回复
默认的对齐方式是 struct 中最大的标量数据类型的倍数 结构体的尺寸可能与元素的排列顺序相关

69,369

社区成员

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

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