|
网站首页
|
业界新闻
|
小组
|
威客
|
人才
|
下载频道
|
博客
|
代码贴
|
在线编程
|
编程论坛
|
登录
注册
短消息
我发表的主题
我参与的主题
我收藏的贴子
我上传的附件
我下过的附件
编辑个人资料
我的博客
用户控制面板
搜索
道具
恢复默认风格
碧海青天
秋意盎然
棕红预览
粉色回忆
蓝雅绿
紫色淡雅
青青河草
e点小镇
橘子红了
红红夜思
水晶紫色
雪花飘飘
新年快乐
风格
短消息
论坛展区
帮助
编程论坛
→
开发语言
→
C++论坛
→
『 C++教室 』
→ 问个关于内存对齐的问题...
我的收件箱(0)
欢迎加入我们,一同切磋技术
用户名:
密 码:
共有
672
人关注过本帖
标题:
问个关于内存对齐的问题...
只看楼主
加入收藏
ToBeOOP
等 级:
论坛游侠
威 望:
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
举报帖子
使用道具
赠送鲜花
迷失的木桶
等 级:
业余侠客
帖 子:52
专家分:230
注 册:2010-5-29
第
2
楼
收藏
得分:0
为什么你认为第二个?理由。。
2010-12-14 19:12
举报帖子
使用道具
赠送鲜花
ToBeOOP
等 级:
论坛游侠
威 望:
3
帖 子:106
专家分:181
注 册:2010-7-8
第
3
楼
收藏
得分:0
我认为是..short是2字节...所以偏移量是2。.所以先偏移2。然后再偏移过的位置上补位
2010-12-14 19:23
举报帖子
使用道具
赠送鲜花
laoyang103
来 自:内蒙古包头
等 级:
贵宾
威 望:
19
帖 子:3082
专家分:11056
注 册:2010-5-22
第
4
楼
收藏
得分:5
1.
OXXX|OOOO|OOXX
我同意第一种
四个字节
首先偏移了1个字节存放char
然后4个存放int
再偏移两个存放short
0表示占用了X 表示空缺
===========深入<----------------->浅出============
2010-12-14 21:27
举报帖子
使用道具
赠送鲜花
ToBeOOP
等 级:
论坛游侠
威 望:
3
帖 子:106
专家分:181
注 册:2010-7-8
第
5
楼
收藏
得分:0
首部的偏移量应该为0的吧..我看了下..偏移量是自身长度的倍数.如果short的长度为2的话..那么第一种的话则偏移了8...是2的倍数..所以我现在支持第一种= =
2010-12-14 21:49
举报帖子
使用道具
赠送鲜花
我菜119
等 级:
青峰侠
帖 子:938
专家分:1756
注 册:2009-10-17
第
6
楼
收藏
得分:0
回复 5楼 ToBeOOP
如果加上#pragma pack(1)那你认为呢?
愿用余生致力编程
2010-12-15 17:25
举报帖子
使用道具
赠送鲜花
ToBeOOP
等 级:
论坛游侠
威 望:
3
帖 子:106
专家分:181
注 册:2010-7-8
第
7
楼
收藏
得分:0
那偏移量应该选最小值...但是首部依然不偏移
2010-12-15 17:51
举报帖子
使用道具
赠送鲜花
pangding
来 自:北京
等 级:
贵宾
威 望:
94
帖 子:6784
专家分:16751
注 册:2008-12-20
第
8
楼
收藏
得分:15
对齐就是把它的地址对齐到访问类型的边界上。
比如 4 个字节的地址就要是 4 的倍数。这个结构的起始地址会被编译器对齐到 4 的倍数上,然后放一个 char,这个 char 不偏移。之后再放 int 的时候,要向后错 3 个字节,以对齐到 4 的倍数上。再放 short 的时候,已经是 4 的倍数了,更是 2 的倍数,也直接放。最后填充 2 个字节,是为了把结束后的地址对齐到 4 的边界上。
2010-12-15 19:34
举报帖子
使用道具
赠送鲜花
ToBeOOP
等 级:
论坛游侠
威 望:
3
帖 子:106
专家分:181
注 册:2010-7-8
第
9
楼
收藏
得分:0
明白了..谢谢各位的回答....
2010-12-15 21:21
举报帖子
使用道具
赠送鲜花
9
1/1页
1
快速回复:
问个关于内存对齐的问题...
数据加载中...
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.042071 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved