黄色在线观看视频-黄色在线免费看-黄色在线视频免费-黄色在线视频免费看-免费啪啪网-免费啪啪网站

首頁 考試吧論壇 Exam8視線 考試商城 網(wǎng)絡課程 模擬考試 考友錄 實用文檔 求職招聘 論文下載
2011中考 | 2011高考 | 2012考研 | 考研培訓 | 在職研 | 自學考試 | 成人高考 | 法律碩士 | MBA考試
MPA考試 | 中科院
四六級 | 職稱英語 | 商務英語 | 公共英語 | 托福 | 雅思 | 專四專八 | 口譯筆譯 | 博思 | GRE GMAT
新概念英語 | 成人英語三級 | 申碩英語 | 攻碩英語 | 職稱日語 | 日語學習 | 法語 | 德語 | 韓語
計算機等級考試 | 軟件水平考試 | 職稱計算機 | 微軟認證 | 思科認證 | Oracle認證 | Linux認證
華為認證 | Java認證
公務員 | 報關員 | 銀行從業(yè)資格 | 證券從業(yè)資格 | 期貨從業(yè)資格 | 司法考試 | 法律顧問 | 導游資格
報檢員 | 教師資格 | 社會工作者 | 外銷員 | 國際商務師 | 跟單員 | 單證員 | 物流師 | 價格鑒證師
人力資源 | 管理咨詢師考試 | 秘書資格 | 心理咨詢師考試 | 出版專業(yè)資格 | 廣告師職業(yè)水平
駕駛員 | 網(wǎng)絡編輯
衛(wèi)生資格 | 執(zhí)業(yè)醫(yī)師 | 執(zhí)業(yè)藥師 | 執(zhí)業(yè)護士
會計從業(yè)資格考試會計證) | 經(jīng)濟師 | 會計職稱 | 注冊會計師 | 審計師 | 注冊稅務師
注冊資產(chǎn)評估師 | 高級會計師 | ACCA | 統(tǒng)計師 | 精算師 | 理財規(guī)劃師 | 國際內(nèi)審師
一級建造師 | 二級建造師 | 造價工程師 | 造價員 | 咨詢工程師 | 監(jiān)理工程師 | 安全工程師
質(zhì)量工程師 | 物業(yè)管理師 | 招標師 | 結構工程師 | 建筑師 | 房地產(chǎn)估價師 | 土地估價師 | 巖土師
設備監(jiān)理師 | 房地產(chǎn)經(jīng)紀人 | 投資項目管理師 | 土地登記代理人 | 環(huán)境影響評價師 | 環(huán)保工程師
城市規(guī)劃師 | 公路監(jiān)理師 | 公路造價師 | 安全評價師 | 電氣工程師 | 注冊測繪師 | 注冊計量師
繽紛校園 | 實用文檔 | 英語學習 | 作文大全 | 求職招聘 | 論文下載 | 訪談 | 游戲
您現(xiàn)在的位置: 考試吧(Exam8.com) > 計算機等級考試 > 計算機二級 > C加加 > 復習資料 > 正文

計算機等級考試二級C++復習指導:深入new

計算機等級考試二級C++復習指導:深入new

  雖然對構造函數(shù)和析構函數(shù)的調(diào)用結果都在預料之中,但所申請的內(nèi)存空間大小以及地址的 數(shù)值卻出現(xiàn)了問題。我們的類MyClass的大小顯然是4個字節(jié),并且申請的數(shù)組中有3個元素,那么應該一共申請12個字節(jié)才對,但事實上系統(tǒng)卻為我們申 請了16字節(jié),并且在operator new[]返后我們得到的內(nèi)存地址是實際申請得到的內(nèi)存地址值加4的結果。也就是說,當為復雜類型動態(tài)分配數(shù)組時,系統(tǒng)自動在最終得到的內(nèi)存地址前空出了 4個字節(jié),我們有理由相信這4個字節(jié)的內(nèi)容與動態(tài)分配數(shù)組的長度有關。通過單步跟蹤,很容易發(fā)現(xiàn)這4個字節(jié)對應的int值為0x00000003,也就是 說記錄的是我們分配的對象的個數(shù)。改變一下分配的個數(shù)然后再次觀察的結果證實了我的想法。于是,我們也有理由認為new[] operator的行為相當于下面的偽代碼:

  template

  T* New[](int count)

  {

  int size = sizeof(T) * count + 4;

  void* p = T::operator new[](size);

  *(int*)p = count;

  T* pt = (T*)((int)p + 4);

  for(int i = 0; i < count; i++)

  new(&pt[i]) T();

  return pt;

  }

  上述示意性的代碼省略了異常處理的部分,只是展示當我們對一個復雜類型使用new[] 來動態(tài)分配數(shù)組時其真正的行為是什么,從中可以看到它分配了比預期多4個字節(jié)的內(nèi)存并用它來保存對象的個數(shù),然后對于后面每一塊空間使用 placement new來調(diào)用無參構造函數(shù),這也就解釋了為什么這種情況下類必須有無參構造函數(shù),最后再將首地址返回。類似的,我們很容易寫出相應的delete[]的實 現(xiàn)代碼:

  template

  void Delete[](T* pt)

  {

  int count = ((int*)pt)[-1];

  for(int i = 0; i < count; i++)

  pt[i].~T();

  void* p = (void*)((int)pt - 4);

  T::operator delete[](p);

  }

  由此可見,在默認情況下operator new[]與operator new的行為是相同的,operator delete[]與operator delete也是,不同的是new operator與new[] operator、delete operator與delete[] operator。當然,我們可以根據(jù)不同的需要來選擇重載帶有和不帶有“[]”的operator new和delete,以滿足不同的具體需求。

  把前面類MyClass的代碼稍做修改--注釋掉析構函數(shù),然后再來看看程序的輸出:

  calling new[] with size=12 address=003A5A58

  ctor

  ctor

  ctor

  address of mc=003A5A58

上一頁  1 2 3 4 5 6 7 8 9 10 下一頁
  相關推薦:計算機等級考試二級:C++學習重點分析試題
       2010年全國計算機等級考試全攻略(一至四級)
       2010年計算機等級考試二級公共基礎知識教程
文章責編:柳絮隨風  
看了本文的網(wǎng)友還看了
文章搜索
版權聲明:如果計算機等級考試網(wǎng)所轉載內(nèi)容不慎侵犯了您的權益,請與我們聯(lián)系800@exam8.com,我們將會及時處理。如轉載本計算機等級考試網(wǎng)內(nèi)容,請注明出處。
主站蜘蛛池模板: 深夜a| 成年人在线播放视频 | 久久午夜鲁丝片午夜精品 | freee性欧美| 欧美日韩中文字幕在线视频 | 三级网站 | 国产特黄特色a级在线视 | 日本r级在线观看播放 | 欧美一级淫片a免费播放口aaa | ass日本医生pics| 欧美a级在线观看 | 欧美日韩在线精品成人综合网 | 制服丝袜综合网 | 中文字幕欧美日韩在线不卡 | 免费看黄色网址 | 亚洲欧美日韩中文高清一 | 日韩 在线视频精品 | 在线观看日本亚洲一区 | 欧美亚洲国产成人不卡 | 玖玖在线精品 | 国产欧美日韩在线一区二区不卡 | 黄漫无遮挡免费网站3d | 午夜精品aaa国产福利 | 国产精品视频第一页 | 中文字幕一区二区三区四区 | 99精品视频在线成人精彩视频 | 最好看免费中文字幕2019 | 午夜视频免费 成人 | 久久综合综合久久 | 亚洲欧美精品日韩欧美 | 国产免费一区二区 | 一级黄色片视频 | 欧美色图第二页 | 日日操夜夜操免费视频 | 日韩精品免费 | 国产一区二区丁香婷婷 | 在线免费观看黄色片 | 有人有片的观看免费视频 | 成人欧美视频在线看免费 | 视频一区 在线 | 日韩一中文字幕 |