| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 672 人关注过本帖
标题:问个关于内存对齐的问题...
只看楼主 加入收藏
ToBeOOP
Rank: 3Rank: 3
等 级:论坛游侠
威 望:3
帖 子:106
专家分:181
注 册:2010-7-8
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:8 
问个关于内存对齐的问题...
class Funtion  {
    private:
        char a;
        int b;
        short c;
};

那么他们的排列应该是哪个?
 1.OXXX|OOOO|OOXX
 2.OXXX|OOOO|XXOO
( X代表补充偏移空出的位置 )
我个人感觉第二种是对的...希望求解
搜索更多相关主题的帖子: 内存 
2010-12-14 18:18
迷失的木桶
Rank: 4
等 级:业余侠客
帖 子:52
专家分:230
注 册:2010-5-29
收藏
得分:0 
为什么你认为第二个?理由。。
2010-12-14 19:12
ToBeOOP
Rank: 3Rank: 3
等 级:论坛游侠
威 望:3
帖 子:106
专家分:181
注 册:2010-7-8
收藏
得分:0 
我认为是..short是2字节...所以偏移量是2。.所以先偏移2。然后再偏移过的位置上补位
2010-12-14 19:23
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:5 
1.    OXXX|OOOO|OOXX
我同意第一种   四个字节  首先偏移了1个字节存放char
然后4个存放int  再偏移两个存放short  
0表示占用了X 表示空缺


                                         
===========深入<----------------->浅出============
2010-12-14 21:27
ToBeOOP
Rank: 3Rank: 3
等 级:论坛游侠
威 望:3
帖 子:106
专家分:181
注 册:2010-7-8
收藏
得分:0 
首部的偏移量应该为0的吧..我看了下..偏移量是自身长度的倍数.如果short的长度为2的话..那么第一种的话则偏移了8...是2的倍数..所以我现在支持第一种= =
2010-12-14 21:49
我菜119
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:938
专家分:1756
注 册:2009-10-17
收藏
得分:0 
回复 5楼 ToBeOOP
如果加上#pragma pack(1)那你认为呢?

愿用余生致力编程
2010-12-15 17:25
ToBeOOP
Rank: 3Rank: 3
等 级:论坛游侠
威 望:3
帖 子:106
专家分:181
注 册:2010-7-8
收藏
得分:0 
那偏移量应该选最小值...但是首部依然不偏移
2010-12-15 17:51
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:15 
对齐就是把它的地址对齐到访问类型的边界上。

比如 4 个字节的地址就要是 4 的倍数。这个结构的起始地址会被编译器对齐到 4 的倍数上,然后放一个 char,这个 char 不偏移。之后再放 int 的时候,要向后错 3 个字节,以对齐到 4 的倍数上。再放 short 的时候,已经是 4 的倍数了,更是 2 的倍数,也直接放。最后填充 2 个字节,是为了把结束后的地址对齐到 4 的边界上。
2010-12-15 19:34
ToBeOOP
Rank: 3Rank: 3
等 级:论坛游侠
威 望:3
帖 子:106
专家分:181
注 册:2010-7-8
收藏
得分:0 
明白了..谢谢各位的回答....
2010-12-15 21:21
快速回复:问个关于内存对齐的问题...
数据加载中...
 
   



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

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