亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

C++對象內存分布詳解(包括字節對齊和虛函數表)

2020-05-23 13:56:44
字體:
來源:轉載
供稿:網友

1、C++對象的內存分布和虛函數表:

C++對象的內存分布和虛函數表注意,對象中保存的是虛函數表指針,而不是虛函數表,虛函數表在編譯階段就已經生成,同類的不同對象中的虛函數指針指向同一個虛函數表,不同類對象的虛函數指針指向不同虛函數表。

2、何時進行動態綁定:

(1)每個類對象在被構造時不用去關心是否有其他類從自己派生,也不需要關心自己是否從其他類派生,只要按照一個統一的流程:在自身的構造函數執行之前把自己所屬類(即當前構造函數所屬的類)的虛函數表的地址綁定到當前對象上(一般是保存在對象內存空間中的前4個字節)。因為對象的構造是從最基類部分(比如A<-B<-C,A是最基類,C是最派生類)開始構造,一層一層往外構造中間類(B),最后構造的是最派生類(C),所以最終對象上綁定的就自然而然就是最派生類的虛函數表。

(2)析構函數的調用跟構造函數的調用順序是相反的,它從最派生類的析構函數開始的。也就是說當基類的析構函數執行時,派生類的析構函數已經執行過,派生類中的成員數據被認為已經無效(包括派生類對象中的虛表指針)。假設基類中虛函數調用能調用得到派生類的虛函數,那么派生類的虛函數將訪問一些已經“無效”的數據,所帶來的問題和訪問一些未初始化的數據一樣。而同樣,我們可以認為在析構的過程中,虛函數表也是在不斷變化的,不斷解綁定。

因此,在基類構造函數或者析構函數中調用虛函數,并不會綁定到派生類的實現上,因為在這兩個函數執行時虛函數表指針指向的是基類的虛函數表。

3、C++中類的大?。?/strong>

由 1 可知,C++對象中只保存非靜態數據成員,成員函數和靜態數據成員是存儲在靜態數據區的。

字節對齊(默認):

1、VC規定各成員變量存放的起始地址相對于結構的起始地址的偏移量必須為該變量的類型所占用的字節數的倍數。

2、VC為了確保結構的大小為結構的字節邊界數(即該結構中占用最大空間的類型所占用的字節數)的倍數,所以在為最后一個成員變量申請空間后,還會根據需要自動填充空缺的字節。

3、如果對齊字節數(#pragma pack(n)),那么

(1)各成員變量存放的起始地址相對于結構的起始地址的偏移量必須為該變量的類型所占用的字節數和n的較小值的倍數。

(2)結構的大小為結構中占用最大空間的類型所占用的字節數和n的較小值的倍數。

class A {  double d; static int i; void f() { std::cout << "A::f" << std::endl; }}; // 8 byte,只有double數據成員占8字節,成員函數和靜態數據成員不在對象中,而是在靜態數據區class B {  int i; //4 double j;//8 char k; //}; // 24 byte,考慮字節對齊, 4 + 4 + 8 + 1 + 7, 藍色的4是為了滿足條件1,黑色的7是為了滿足條件2。如果指定4字節對齊,4 + 8 + 1 + 3class C {  virtual void f() { std::cout << "C::f" << std::endl; }}; // 4 byte,虛函數表指針占4個字節class D { };// 1 byte,沒有成員變量的結構或類的大小為1,因為必須保證結構或類的每一 個實例在內存中都有唯一的地址

注:

1、如果有成員對象,直接把成員對象展開到外部對象中,然后按照字節對齊的規律求大小。

2、虛繼承的內存分布為:虛類指針-》派生類成員數據-》基類成員數據。其對齊方案是:首先把派生類所有成員當成一個嵌套結構體形式,位于最下面的基類的數據成員要保證自己對齊(首地址整除自己的字節數),但是不用在最下面添加字節保證整體是邊界長度的整數倍(因為基類成員共享,不能把派生類當成一個整體)。

3、如果對象中有數組,可以把數組展開到對象中,然后按照字節對齊的規律求大小。

4、為什么要進行字節對齊

計算機組成原理教導我們這樣有助于加快計算機的取數速度,否則就得多花指令周期了。為此,編譯器默認會對結構體進行處理(實際上其它地方的數據變量也是如此),讓寬度為2的基本數據類型(short等)都位于能被2整除的地址上,讓寬度為4的基本數據類型(int等)都位于能被4整除的地址上,以此類推。比如有些平臺每次讀都是從偶地址開始,如果一個int型(假設為32位系統)如果存放在偶地址開始的地方,那么一個讀周期就可以讀出這32bit,而如果存放在奇地址開始的地方,就需要2個讀周期,并對兩次讀出的結果的高低字節進行拼湊才能得到該32bit數據。

備注:visual studio 2010是按照默認方式進行字節對齊的 32位gcc按照4字節最齊

以上就是小編為大家帶來的C++對象內存分布詳解(包括字節對齊和虛函數表)全部內容了,希望大家多多支持VEVB武林網~


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲女人天堂av| 国产欧美一区二区三区久久| 国产精品久久久久久亚洲调教| 第一福利永久视频精品| 精品久久香蕉国产线看观看gif| 在线播放日韩av| 久久精品一本久久99精品| 九九热r在线视频精品| 91av在线播放| 国产美女久久精品香蕉69| 中文字幕亚洲情99在线| 精品国产1区2区| 亚洲一区二区在线| 欧美日韩成人免费| 久久国产一区二区三区| 91手机视频在线观看| 伊人久久五月天| 亚洲日韩第一页| 国产成人在线精品| 久久精品国产一区二区电影| 国内精品久久久久影院优| 欧美视频一区二区三区…| 日本免费一区二区三区视频观看| 热久久美女精品天天吊色| 日韩精品亚洲视频| 国产精品综合网站| 性欧美亚洲xxxx乳在线观看| 久久精品福利视频| 国产一区二区三区视频在线观看| 欧美日韩亚洲一区二区| 综合国产在线观看| 91香蕉嫩草神马影院在线观看| 亚洲精品白浆高清久久久久久| 亚洲欧美一区二区三区情侣bbw| 亚洲成人xxx| 国产精品中文字幕在线观看| 久久99青青精品免费观看| 欧美大片va欧美在线播放| 亚洲自拍偷拍福利| 色爱精品视频一区| 高跟丝袜一区二区三区| 精品国产91乱高清在线观看| 亚洲精品乱码久久久久久按摩观| 欧美性猛交视频| 这里只有视频精品| 亚洲一区二区精品| 精品在线欧美视频| 国产精品一区二区三区毛片淫片| 久久精品久久久久| 在线电影中文日韩| 97色在线观看免费视频| 欧美放荡办公室videos4k| 国产精品海角社区在线观看| 91色精品视频在线| 日韩成人高清在线| 亚洲福利视频专区| 欧美精品videosex性欧美| 亚洲精品网址在线观看| www.亚洲免费视频| 中文字幕亚洲情99在线| 国产91精品不卡视频| 中国china体内裑精亚洲片| 国产视频自拍一区| 97在线视频免费观看| 欧美黑人视频一区| 日本sm极度另类视频| 亚洲精品99久久久久中文字幕| 国产精品男女猛烈高潮激情| 在线视频欧美性高潮| 国产精品999| 亚洲精品福利视频| 深夜福利国产精品| 欧美日韩久久久久| 日韩av网址在线观看| 浅井舞香一区二区| 国产精品国内视频| 久久99国产精品久久久久久久久| 国产精品九九九| 欧美xxxx做受欧美.88| 91极品视频在线| 国产精品一区=区| 久久久久久久一区二区三区| 亚洲欧美一区二区三区久久| 欧美最顶级丰满的aⅴ艳星| 久久久久久九九九| 日韩精品视频免费专区在线播放| 国产精品久久久久久久久久99| 麻豆乱码国产一区二区三区| 曰本色欧美视频在线| 国产精品久久久久福利| 亚洲国产精品热久久| 色婷婷综合久久久久| 欧美多人爱爱视频网站| 欧美黄色成人网| 国产专区欧美专区| 中文字幕欧美在线| 在线午夜精品自拍| 日日狠狠久久偷偷四色综合免费| 日本久久久久久| 日韩av免费在线观看| 亚洲精品一区中文| 9.1国产丝袜在线观看| 日韩av男人的天堂| 日韩在线欧美在线国产在线| 欧美激情精品久久久久久久变态| 一本色道久久综合狠狠躁篇的优点| 北条麻妃99精品青青久久| 亚洲一区二区三区xxx视频| 欧美成人激情图片网| 视频在线观看99| 国产成人综合一区二区三区| 欧美性高潮在线| 97久久伊人激情网| 色妞一区二区三区| 亚洲成人网在线观看| 日韩电影视频免费| 一区二区三区国产视频| 亚洲伊人第一页| 91免费国产视频| 久久久精品2019中文字幕神马| 日韩欧美在线字幕| 国产精品96久久久久久又黄又硬| 亚洲乱码av中文一区二区| 日韩av在线影院| 国产精品女主播视频| 欧美日韩国产激情| 亚洲精品电影在线| 午夜精品三级视频福利| 久久久久日韩精品久久久男男| 国产成人aa精品一区在线播放| 国产欧美一区二区三区久久人妖| 成人午夜高潮视频| 最近2019中文字幕第三页视频| 精品人伦一区二区三区蜜桃网站| 69久久夜色精品国产69| 中文字幕日韩在线视频| 国产亚洲精品高潮| 精品国产91久久久| 欧美贵妇videos办公室| 国产精品福利观看| 成人在线播放av| 高清一区二区三区日本久| 欧美一级免费视频| 日韩在线免费高清视频| 日韩网站免费观看高清| 久久久久国产一区二区三区| 日韩高清电影免费观看完整版| 亚洲剧情一区二区| 91精品久久久久久久久中文字幕| 亚洲影院高清在线| 国产一区二区黄| 欧美高清不卡在线| 日韩精品有码在线观看| 亚洲国内精品在线| 久久免费高清视频| 亚洲欧美另类中文字幕| 亚洲视频在线观看视频| 色悠悠国产精品| 国内精品国产三级国产在线专| 久久精品一偷一偷国产| 九九热精品在线| 亚洲精品色婷婷福利天堂| 伊人伊人伊人久久| www.久久草.com|