青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

浪跡天涯

唯有努力...
努力....再努力...

再談sizeof()的問題

union A
{
int a[5];
char b;
double c;
};

struct B
{
int n;
A a;
char c[10];
}

32位機器環境,求sizeof(B) = ?
先別在機器上跑,大家自己先算算,然后確認看看和你算的是否一致。
然后再討論討論,我先前以為對sizeof理解透了,沒想到算這個的時候還是沒吃透,答案就先不說了,賣個關子!
如果union A改為struct A,結果又如何呢?

posted on 2008-02-29 17:23 浪跡天涯 閱讀(3515) 評論(17)  編輯 收藏 引用 所屬分類: C++

評論

# re: 再談sizeof()的問題 2008-02-29 18:20 comiunknown

我在WM5的手機上運行后的結果是48,32位PC機估計結果一樣,
sizeof(A) = 24
奇怪48是怎么來的  回復  更多評論   

# re: 再談sizeof()的問題 2008-02-29 19:55 hg

內存對齊,不同的編譯器你規則不同  回復  更多評論   

# re: 再談sizeof()的問題 2008-02-29 20:06 54sun

這個不是sizeof()的問題吧,應該是struct的問題,其中的變量只能以自己大小整數倍的大小地址開始,所有就算變量相同,但是會因為順序不同最后struct的大小也會不同。不知道lz是不是想說這個?  回復  更多評論   

# re: 再談sizeof()的問題[未登錄] 2008-02-29 21:39 a

你空間是不是被掛馬了?  回復  更多評論   

# re: 再談sizeof()的問題 2008-02-29 23:57 Fox

int 4
union 20
c 10
34
如果考慮4字節對齊,應該是36  回復  更多評論   

# re: 再談sizeof()的問題 2008-03-01 08:42 浪跡天涯

我的意思不是說sizeof()函數的問題。
我本意也并不是討論各個編譯器的規則。
我是想探討sizeof()求結構struct,union時的規則。
很不厚道,有人在機器上跑了一趟,不過依然謝謝。
union A:
{
int a[5]; //20
char b; //1
double c; //8
}我想的是union中變量共用內存,應以最長的為準,那就是20。可實際不然,sizeof(A)=24,后來一想應該是必須考慮A中各變量的默認內存對齊方式,必須以最長的double 8字節對齊,故應該是sizeof(A)=24。
關于sizeof(B)下篇再續,也希望大家多探討探討,寫下你的想法!  回復  更多評論   

# re: 再談sizeof()的問題 2008-03-01 08:52 浪跡天涯

沒有掛木馬,是計數器卡著了@a
  回復  更多評論   

# re: 再談sizeof()的問題[未登錄] 2008-03-01 12:26 CppExplore

空間有毒!!!!大家小心
@浪跡天涯
如果是什么計數器卡著了,也請修改正常。  回復  更多評論   

# re: 再談sizeof()的問題 2008-03-01 13:20 kimiya25

如果這樣寫我運行卻是40..
struct {
int n;
char c[10];
union {
int a[5];
char b;
double c;
} u_a;
} B;  回復  更多評論   

# re: 再談sizeof()的問題 2008-03-01 21:43 Fisher

struct B
{
int n; // 4字節
A a; // 24字節
char c[10]; // 10字節
};
實際占用38字節,但由于A是8字節對齊的,所以int n和char c[10]也需要8字節對齊,總共8+24+16=48  回復  更多評論   

# re: 再談sizeof()的問題 2008-03-02 23:26 sad

掛馬了,請清理  回復  更多評論   

# re: 再談sizeof()的問題 2008-03-03 08:44 浪跡天涯

空間還有毒嗎?我什么東西都沒放啊!  回復  更多評論   

# re: 再談sizeof()的問題 2008-03-04 11:12 frank.sunny

非常感謝,說實話,我也不幸中招了

死得很慘,慚愧一下

  回復  更多評論   

# re: 再談sizeof()的問題 2008-03-04 13:04 李侃

字節對齊問題,可以取消pack(4)到pack(1) ,結果就又不一樣了哦  回復  更多評論   

# re: 再談sizeof()的問題 2008-03-04 16:00 瞇著眼的貓

可以這么理解吧:
內存對齊主要目的是提升讀取數據的速度,通過保證 類型數據(n字節)保存在n倍數的內存

地址上。(n越大,要求越嚴格。)
要做到這點,有3個位置要求。
首地址,調到最嚴格地址倍數上,不影響大小。
中間項,按各自下一項的地址要求填充調整,影響大小。
最后一項,通過填充,達到最嚴格地址大小倍數,影響大小。
union A
{
int a[5];
char b;
double c;
};
對于union A(共享內存),其實只有一項
至少需要20字節。首地址可以解釋為3種類型,
A =a時,
| 4 | 4 | 4 | 4 | 4 | ,20字節
中間和尾部都不需調整。
A =b時,
|1|.................|,
中間和尾部都不需調整,20字節。
A =c時,
| 8 |...........|,
c作為最后項,需要調整20-〉24
因此,內存布局:
| 4 | 4 | 4 | 4 | 4 |...| (...為padding),total=24

struct B
{
int n;
A a;
char c[10];
};
這里要注意a,是作為A類型,是一項數據。
對于 struct B,最嚴格8字節,
首地址為8的倍數,填入n,(后面空4個字節,因為a的開始地址要求8的倍數)
c,開始地址無特殊要求,a后面無需填充,
作為尾項,c,10-〉16
| 4 |...| 4 | 4 | 4 | 4 | 4 |...|10->16|

to kimiya25:
struct C{
int n;
char c[10];
union {
int a[5];
char b;
double c;
} u_a;
};
n: 4
c: 10->12
u_a: 24
| 4 | 10 |...| 24 |
//----------------------------------
效率的解釋:例處理器每次從內存讀入8個字節的數據,當我們需要一個double類型的數據

時,通過在寫入內存時改保證數據寫在8倍數的地址上,就能夠只用一次讀,否則可能跨越

,需要兩次  回復  更多評論   

# re: 再談sizeof()的問題 2008-03-05 08:30 浪跡天涯

@瞇著眼的貓
很感謝瞇著眼的貓 解釋的很詳細!
我先前以為對sizeof()理解的很透徹,但遇到這個union一開始沒有理解透徹,直到在機器上跑一遍以后,才理解清楚。  回復  更多評論   

# re: 再談sizeof()的問題 2008-03-05 10:28 Fox

問題出在union的對齊上面,要按照單位最長的成員對齊。。。。
學習了  回復  更多評論   

<2011年12月>
27282930123
45678910
11121314151617
18192021222324
25262728293031
1234567

導航

統計

常用鏈接

留言簿(22)

隨筆分類(30)

隨筆檔案(29)

文章分類

搜索

積分與排名

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            日韩小视频在线观看专区| 久久久久久久久久久久久女国产乱| 在线亚洲免费视频| 亚洲国产婷婷| 好吊日精品视频| 国户精品久久久久久久久久久不卡| 国产精品亚洲成人| 国产区精品视频| 狠狠操狠狠色综合网| 影音先锋亚洲电影| 日韩天堂在线视频| 亚洲一区二区精品视频| 宅男66日本亚洲欧美视频| 亚洲少妇一区| 欧美一级理论片| 久久在线视频在线| 亚洲国产精品成人一区二区| 欧美黄色一区| 亚洲美女在线观看| 先锋亚洲精品| 欧美大片免费观看| 国产欧美欧洲在线观看| 狠久久av成人天堂| 亚洲精品黄色| 久久高清国产| 亚洲电影第三页| 亚洲一区二区视频在线| 久久精品最新地址| 欧美日韩免费| 亚洲高清在线| 校园激情久久| 亚洲日本成人网| 久久国产色av| 欧美日韩在线视频一区二区| 伊人久久大香线蕉综合热线| 国产精品99久久久久久白浆小说| 久久精品久久99精品久久| 日韩一级免费观看| 久久一区二区三区av| 国产精品视频99| 99在线|亚洲一区二区| 另类春色校园亚洲| 午夜久久一区| 国产精品99一区二区| 亚洲激情精品| 欧美国产免费| 久久久av网站| 国产亚洲精品久久久久动| 亚洲一区二区三区午夜| 欧美高清视频一区二区| 久久aⅴ国产欧美74aaa| 国产精品久久久久久一区二区三区| 91久久精品国产91久久| 久久综合影音| 欧美一区国产二区| 亚洲经典一区| 嫩草国产精品入口| 在线观看欧美激情| 久久精品99久久香蕉国产色戒| 99www免费人成精品| 欧美精品久久久久久久久久| 亚洲国产专区校园欧美| 免费在线亚洲| 另类图片国产| 亚洲精华国产欧美| 免费人成网站在线观看欧美高清| 亚洲在线成人精品| 国产精品毛片va一区二区三区| 伊人一区二区三区久久精品| 久久综合伊人77777| 亚洲成人在线视频播放 | 在线日韩av| 亚洲天天影视| 欧美韩日视频| 欧美韩日一区二区| 亚洲国产精品v| 欧美国产综合视频| 久久综合久久久久88| 欧美va亚洲va香蕉在线| 亚洲小视频在线| 欧美aaaaaaaa牛牛影院| 欧美午夜在线一二页| 99视频超级精品| 亚洲视频网站在线观看| 亚洲欧美日韩国产综合| 欧美特黄a级高清免费大片a级| 性18欧美另类| 国产精品久久久久久亚洲毛片| 亚洲精品欧美极品| 欧美一级网站| 国内精品久久久久久久影视麻豆 | 99视频超级精品| 激情av一区| 久久精品视频播放| 久久综合狠狠综合久久综合88 | 老巨人导航500精品| 亚洲国产精品va在线观看黑人| 亚洲精品极品| 久久只有精品| 亚洲在线视频免费观看| 欧美一级专区| 在线看国产一区| 国产麻豆成人精品| 亚洲淫性视频| 久久久久中文| 亚洲精品网站在线播放gif| a91a精品视频在线观看| 国产精品欧美风情| 欧美二区不卡| 欧美视频你懂的| 久久伊人精品天天| 欧美激情综合色| 久久亚洲精品伦理| 欧美激情亚洲激情| 麻豆精品在线观看| 欧美日韩国产首页| 亚洲精选国产| 在线性视频日韩欧美| 国产一区二区三区久久| 欧美岛国激情| 国产中文一区| 亚洲精品日韩在线| 在线日韩成人| 亚洲自拍偷拍福利| aa成人免费视频| 午夜国产欧美理论在线播放| 99国产精品久久久| 久久国产精品一区二区三区四区| 亚洲性线免费观看视频成熟| 久久激情五月激情| 亚洲精品1区2区| 久久精品一二三区| 在线综合欧美| 欧美日韩精品中文字幕| 蜜桃精品一区二区三区| 黄色亚洲在线| 亚洲视屏一区| 亚洲免费中文字幕| 欧美精品一区二区三区一线天视频| 欧美va日韩va| 国产亚洲精品成人av久久ww| 午夜精品久久久久久久99樱桃| 日韩一级不卡| 欧美日韩成人精品| 欧美激情第9页| 亚洲人体影院| 久久久综合视频| 久久夜色精品国产亚洲aⅴ| 国产精品乱人伦中文| 一区二区三区日韩精品| 香港成人在线视频| 99在线精品观看| 一色屋精品视频在线看| 欧美在线影院| 国产亚洲欧美一区二区三区| 亚洲人成久久| 欧美凹凸一区二区三区视频| 美女网站久久| 国产日韩高清一区二区三区在线| 久久久久一区二区| 久久久国产午夜精品| 亚洲香蕉成视频在线观看| 中文一区二区在线观看| 久久欧美肥婆一二区| 亚洲欧美日韩第一区| 亚洲大胆人体在线| 欧美va天堂| 欧美一区2区视频在线观看| 久久精品99| 欧美日韩卡一卡二| 久久精品国产亚洲一区二区三区| 欧美大片在线看免费观看| 尤妮丝一区二区裸体视频| 久久久国产精品一区二区三区| 亚洲一卡久久| 一区二区成人精品| 久久久无码精品亚洲日韩按摩| 久久av一区二区三区| 欧美国产精品| 一区二区三区高清视频在线观看| 夜夜嗨av一区二区三区免费区| 久久狠狠亚洲综合| 国产精品夜夜夜| 久久久久久亚洲精品中文字幕| 欧美福利影院| 亚洲美女在线看| 欧美日韩亚洲一区二| 亚洲最黄网站| 国产精品久久久久久av福利软件| 中国亚洲黄色| 久久手机精品视频| 欧美一区国产一区| 一本色道久久综合亚洲精品婷婷 | 美日韩在线观看| 欧美**字幕| 国产亚洲毛片在线| 一区二区国产日产| 午夜综合激情| 欧美性一区二区| 亚洲国产综合在线看不卡|