| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2572 人关注过本帖
标题:结构体在内存的中如何存放(如何让字节对齐)?
只看楼主 加入收藏
venus85
Rank: 6Rank: 6
等 级:侠之大者
帖 子:159
专家分:477
注 册:2010-11-27
结帖率:64.71%
收藏
已结贴  问题点数:10 回复次数:19 
结构体在内存的中如何存放(如何让字节对齐)?
关于结构体的字节对齐问题我不是很明白,还有结构体所占内存空间的计算:
比如像这个结构体:
{ struct abc
    {
      int a;
      char b[3];
      float c;
      double d;
    } i,j;
    如果首地址分别为2000和2001,它在内存中式如何存放的?
这个结构体在内存中占多少个字节?(32位机)?
是4*1+3*2+4*1+8*1=22吗?还是其他的?
搜索更多相关主题的帖子: 内存 结构体 字节 
2010-11-30 14:08
qqlinlin
Rank: 2
等 级:论坛游民
帖 子:13
专家分:58
注 册:2010-11-23
收藏
得分:0 
内存多少跟定义的变量顺序有关
有什么疑问QQ交流:1530591908
2010-11-30 14:18
venus85
Rank: 6Rank: 6
等 级:侠之大者
帖 子:159
专家分:477
注 册:2010-11-27
收藏
得分:0 
没人来回答吗?不是非得回答这个问题的,大家可以一起讨论啊
2010-11-30 16:05
xiaomarn
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:348
专家分:2026
注 册:2009-3-18
收藏
得分:0 
4+4+4+8=20
当数据按计算机的数据总线长度存储时,查询,储存速度最快
2010-11-30 16:24
venus85
Rank: 6Rank: 6
等 级:侠之大者
帖 子:159
专家分:477
注 册:2010-11-27
收藏
得分:0 
以下是引用xiaomarn在2010-11-30 16:24:07的发言:

4+4+4+8=20
当数据按计算机的数据总线长度存储时,查询,储存速度最快
首先谢谢你,你这里是在字符数组除采用了字节对齐是吗?但是这样的话是不是在定义的时候要定义成这样呢?
{ struct abc
    {
      int a;
      char rfu; /*预留字节*/
      char b[3];
      float c;
      double d;
    } i,j;
将3字节的字符数组对齐成四字节?如果按我之前那定义,没有char rfu; 这一句,
那结构体占用的内存应该是4+3+4+8=19个字节吗???
2010-11-30 16:36
我菜119
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:938
专家分:1756
注 册:2009-10-17
收藏
得分:0 
回复 4楼 xiaomarn
你的这个答案是错的,起码在vc++中就是错的!你根本就不知道内存对齐是怎么回事!!!觉得你好像一个小丑!

愿用余生致力编程
2010-11-30 17:35
我菜119
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:938
专家分:1756
注 册:2009-10-17
收藏
得分:0 
回复 5楼 venus85
你的这个理解就好像当初给我们讲解大学c语言老师一样的“二” ,

愿用余生致力编程
2010-11-30 17:41
xiaomarn
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:348
专家分:2026
注 册:2009-3-18
收藏
得分:2 
不是说了讨论吗?我只是说了我的见解,我也是菜鸟,谁没有菜的时候,也不用这么中伤吧!
2010-11-30 17:45
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
看看...

我就是真命天子,顺我者生,逆我者死!
2010-11-30 17:50
我菜119
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:938
专家分:1756
注 册:2009-10-17
收藏
得分:0 
无语!

愿用余生致力编程
2010-11-30 17:50
快速回复:结构体在内存的中如何存放(如何让字节对齐)?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018748 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved