第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

64位Ubuntu下的奇怪輸出結果,sizeof(Class)

Shape.h的代碼定義如下:

class?Shape?{
public:
Shape();
virtual?~Shape();
virtual?double?calcArea();
};

Circle.h的代碼定義如下:

class?Circle:?public?Shape?{
public:
Circle(int?radius);
~Circle();
//double?calcArea();
protected:
int?m_radius;
};

Main.cpp主函數(shù)的代碼及輸出結果為:

int?main(void)
{
Shape?sh;
cout?<<?sizeof(sh)?<<?endl;
//?Output:?8
Circle?ci(100);
cout?<<?sizeof(ci)?<<?endl;
//?Output:?16
return?0;
}

這里就對第二輸出16不理解了,Shape類由于有虛函數(shù)表指針占8字節(jié),Circle自身只有int類型的一個變量占4字節(jié),那總共應該8+4=12字節(jié)呀?為啥這里是16字節(jié)呢?

我猜測是不是因為內(nèi)存對齊的問題,求解釋呀!各位大神


正在回答

3 回答

一般這種情況都是因為內(nèi)存對齊

1 回復 有任何疑惑可以回復我~
#1

帥踢鍋 提問者

請問64-bit Ubuntu的對齊單位是8字節(jié)嗎?哪里可以查到每個系統(tǒng)的對齊標準呀
2015-10-04 回復 有任何疑惑可以回復我~
#2

onemoo 回復 帥踢鍋 提問者

基本上是CPU尋址對地址對齊有要求,不能說是和系統(tǒng)相關。 一般在寫代碼時腦中有這個概念就可以了,我也沒有把這些都背下來。 要是問我哪里能查到,我只能說各CPU廠商的產(chǎn)品規(guī)格手冊中詳細說明了這些。
2015-10-04 回復 有任何疑惑可以回復我~
#3

帥踢鍋 提問者 回復 onemoo

原理是這樣!onemoo果然是大神啊,兩三次都是您回復的。實在太感謝啦
2015-10-04 回復 有任何疑惑可以回復我~

內(nèi)存對齊可以參考:《計算機組成原理》

0 回復 有任何疑惑可以回復我~

今天也想到了這個問題,忘了字節(jié)對齊的概念了,原來如此。

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
C++遠征之多態(tài)篇
  • 參與學習       66225    人
  • 解答問題       334    個

本教程將帶領大家體會面向對象三大特性中的多態(tài)特性

進入課程

64位Ubuntu下的奇怪輸出結果,sizeof(Class)

我要回答 關注問題
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號