当定义一个结构的时候,什么叫对齐?

azhen 2005-11-12 08:27:18
定义这样一个结构
struct{
int a;
double b;
char c;
};
这里面什么叫对齐啊,表现在什么地方?求教了!

...全文
136 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Caps77 2005-11-14
  • 打赏
  • 举报
回复
呵呵,不是那么容易就能理解的

http://www.blogcn.com/user65/caps77/blog/25507407.html
cdo 2005-11-14
  • 打赏
  • 举报
回复
int, double, char本来是4,8,1的,现在变成了8,8,8。 好处应该在内在分配和处理效率上吧。
hbvanguard 2005-11-14
  • 打赏
  • 举报
回复
int double char内存占用情况如下:
----------------------------------
| int(4)| double(8) |char(1)| 共13字节
----------------------------------
对齐后
----------------------------------------------
| int(4+4) | double(8) |char(1+7) |共24字节
----------------------------------------------
goodluckyxl 2005-11-14
  • 打赏
  • 举报
回复
http://community.csdn.net/Expert/topic/4324/4324625.xml?temp=.4974787
liuq 2005-11-14
  • 打赏
  • 举报
回复
int a;
char b;
double c;
是编译器来决定如何处理吗?
Death_YEH 2005-11-12
  • 打赏
  • 举报
回复
是变成4,8,2吧?
如果改成
int a;
char b;
double c;
就更明白了
b只占有一个字节,如果a的开始地址是偶数,那么,c的开始位置一定是奇数了,这样会影响效率,如果变量从偶数地址开始效率会高很多,所以b后面那个字节就空出来了,本来占13个字节的变成了14个字节。这个叫偶对齐吧
ma100 2005-11-12
  • 打赏
  • 举报
回复
int a;
double b;
char c;

本来占字节 4,8,1
使用对齐功能后就变成了8,8,8,优点:运行快

69,380

社区成员

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

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