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

浪跡天涯

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

再談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 浪跡天涯 閱讀(3516) 評論(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的對齊上面,要按照單位最長的成員對齊。。。。
學習了  回復  更多評論   

<2008年6月>
25262728293031
1234567
891011121314
15161718192021
22232425262728
293012345

導航

統計

常用鏈接

留言簿(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>
            美日韩精品免费观看视频| 亚洲美女视频在线免费观看| 午夜久久电影网| 国产原创一区二区| 麻豆国产精品va在线观看不卡| 久久av红桃一区二区小说| 精品999久久久| 亚洲激情六月丁香| 国产精品亚洲综合| 久久免费视频在线观看| 久久人人97超碰人人澡爱香蕉| 在线视频成人| 一区二区成人精品| 在线观看欧美日韩国产| 久久精品视频在线| 欧美人成在线视频| 久久久久久网址| 欧美色精品天天在线观看视频| 亚洲欧美国内爽妇网| 久久一二三四| 欧美在线一区二区三区| 久久综合伊人| 久久精品欧美| 欧美视频不卡中文| 久久久久久久尹人综合网亚洲| 欧美国产日韩在线| 欧美亚洲综合另类| 欧美日韩黄色大片| 最新国产成人av网站网址麻豆| 国产欧美日韩91| 在线一区视频| 亚洲自拍偷拍麻豆| 欧美日一区二区三区在线观看国产免| 久久人人精品| 国产精品成人一区二区网站软件| 亚洲欧洲一区二区在线播放| 伊人成综合网伊人222| 欧美一区二区播放| 久久精品视频亚洲| 在线播放一区| 老司机亚洲精品| 午夜精品国产| 国产日韩欧美高清免费| 校园春色国产精品| 免费观看久久久4p| 亚洲少妇诱惑| 国产亚洲激情| 欧美sm视频| avtt综合网| 久久一本综合频道| 亚洲精品老司机| 国产麻豆精品在线观看| 美国十次了思思久久精品导航| 亚洲激情av| 欧美一区二区三区在线| 狠狠色丁香婷婷综合久久片| 久久精品亚洲一区二区三区浴池| 欧美96在线丨欧| 亚洲欧美在线免费| 一区二区免费在线观看| 精品成人a区在线观看| 国产精品免费网站| 欧美日韩1234| 另类成人小视频在线| 午夜精品视频在线| 亚洲一区二区三区午夜| 亚洲精品国产日韩| 91久久在线| 亚洲精品一二| 一本色道88久久加勒比精品| 亚洲大胆人体视频| 亚洲午夜免费视频| 免费观看成人| 日韩午夜精品| 亚洲欧美视频一区| 一区二区国产在线观看| 久久不射网站| 午夜精品www| 国产精品美女久久久久久2018| 亚洲国产日韩一区| 免费在线观看精品| 欧美伊人精品成人久久综合97| 亚洲福利在线视频| 猛男gaygay欧美视频| 亚洲一区视频在线| 欧美女激情福利| 99在线视频精品| 亚洲欧洲视频在线| 欧美日韩国产系列| 在线天堂一区av电影| 亚洲精品影院| 国产精品美女久久久久久2018 | 欧美紧缚bdsm在线视频| 在线精品视频在线观看高清 | 奶水喷射视频一区| 久久综合狠狠综合久久综合88 | 美女网站久久| 夜夜嗨av一区二区三区网页| 一区二区福利| 国产亚洲毛片在线| 亚洲国产精品毛片| 国产精品xxx在线观看www| 欧美一区在线看| 你懂的视频欧美| 亚洲欧美在线一区二区| 久久久久国产精品www| 一区二区三区久久| 欧美影院视频| 亚洲午夜精品17c| 久久亚裔精品欧美| 亚洲精品韩国| 久久精品一区二区三区不卡| 一区二区日韩| 久久不射2019中文字幕| 正在播放日韩| 欧美成人免费大片| 蜜月aⅴ免费一区二区三区 | 国内精品久久久久久久影视蜜臀| 91久久精品网| 尤物九九久久国产精品的分类| 一区二区三区视频在线 | 久久成人在线| 久久国产高清| 国产一区二区中文字幕免费看| 99pao成人国产永久免费视频| 亚洲精品久久在线| 欧美www视频| 亚洲理论在线观看| 在线亚洲欧美视频| 欧美日韩一区二区三区在线观看免 | 国产欧美一区二区白浆黑人| 亚洲人人精品| 亚洲一区在线看| 欧美午夜宅男影院| 小黄鸭精品密入口导航| 久久久夜夜夜| 91久久极品少妇xxxxⅹ软件| 蜜臀久久99精品久久久画质超高清 | 欧美激情欧美激情在线五月| 最新亚洲视频| 国产精品久久久999| 午夜精品久久久久久久99黑人| 久久午夜精品| 亚洲午夜久久久久久久久电影网| 国产精品激情| 美女日韩在线中文字幕| 日韩午夜在线播放| 久久久中精品2020中文| 亚洲美女在线视频| 国产综合久久| 欧美色综合天天久久综合精品| 欧美一区二区黄色| 亚洲美女在线国产| 亚洲成色777777女色窝| 欧美一级播放| 一区二区三区久久网| 亚洲第一天堂无码专区| 国产精品一区三区| 欧美日韩一区二区在线播放| 久久综合久久综合这里只有精品| 亚洲视频成人| 亚洲视频在线观看三级| 亚洲国产精品久久久久婷婷老年 | 性欧美激情精品| 一区二区三区欧美日韩| 亚洲人体一区| 亚洲理论在线观看| 日韩一级在线| 亚洲精品一区二| 亚洲片在线观看| 日韩视频在线免费| 亚洲激情在线观看视频免费| 亚洲国产日韩欧美综合久久 | 亚洲国产精品日韩| 狠狠色丁香久久综合频道| 国产真实乱偷精品视频免| 国内成人精品一区| 91久久极品少妇xxxxⅹ软件| 亚洲欧洲一区二区三区久久| 日韩视频在线观看国产| 夜夜嗨av一区二区三区免费区| 亚洲免费观看在线观看| 性伦欧美刺激片在线观看| 午夜精品一区二区三区在线播放 | 亚洲精品乱码久久久久久蜜桃麻豆| 亚洲人www| 欧美一区二区福利在线| 欧美电影打屁股sp| 国产一区二区在线观看免费| 在线成人性视频| 欧美一区二区三区精品| 亚洲国产精彩中文乱码av在线播放| 亚洲精品人人| 老妇喷水一区二区三区| 国产精品亚洲а∨天堂免在线| 亚洲精品一线二线三线无人区| 欧美中文字幕久久| 亚洲精品在线三区| 欧美黑人在线观看| 亚洲成在人线av|