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

loop_in_codes

低調做技術__歡迎移步我的獨立博客 codemaro.com 微博 kevinlynx

C++陷阱:virtual析構函數

有一天有個同事在通過vld調試一個內存泄漏問題,折騰了很久然后找到我。我瞥了一眼他的代碼,發現問題和我曾經遇到的一模一樣:

class Base {
public:
    ~Base();
};

class Derived : public Base {
privated:
    std::vector<int> m_data;    
}; Base *obj = new Derived(); delete obj;

當然,實際代碼比這個復雜得多(這也是導致從發現問題到找到問題耗費大量時間的原因)。vld在報內存泄漏時,當然報的位置是new的地方。這個同事檢查了這個對象的整個生命周期,確定他正確地釋放了這個對象。

問題的關鍵就在于:Base類的析構函數不是virtual。因為不是virtual,所以在對一個Base類型的指針進行delete時,就不會調用到派生類Derived的析構函數。而派生類里的析構函數會用于析構其內部的子對象,也就是這里的m_data。這樣,就造成了內存泄漏。

這其實是一個很低級的失誤。但毫不客氣地說C++中有很多這種少個關鍵字或者代碼位置不對就會造成另一個結果的例子。事實上,針對這些悲劇也有很多書提出一些準則來讓大家去無腦遵守。例如針對這個例子,我就記得曾有書說,只要你覺得你的類會被繼承,那么最好給析構函數加上virtual。

posted on 2012-09-13 17:31 Kevin Lynx 閱讀(4572) 評論(8)  編輯 收藏 引用 所屬分類: c/c++

評論

# re: C++陷阱:virtual析構函數 2012-09-13 17:49 preboy

到目前為止還沒有犯過這錯誤,不過需要記住以后不犯這個錯誤  回復  更多評論   

# re: C++陷阱:virtual析構函數 2012-09-13 19:29 test

如果編譯器發現被繼承了。那么直接把那個類的~設置為virtual如何。  回復  更多評論   

# re: C++陷阱:virtual析構函數 2012-09-14 09:02 Kevin Lynx

@test
繼承不一定會使用到多態  回復  更多評論   

# re: C++陷阱:virtual析構函數[未登錄] 2012-09-15 09:36 korall

至少能給出一個警告  回復  更多評論   

# re: C++陷阱:virtual析構函數 2012-09-17 09:16 zaccheo

這個不能歸咎于c++的陷阱吧  回復  更多評論   

# re: C++陷阱:virtual析構函數 2012-09-17 18:54 yrj

Visual C++ 有 C4265 警告,g++ 有 -Wnon-virtual-dtor  回復  更多評論   

# re: C++陷阱:virtual析構函數 2014-05-10 21:49 YJj

學習到了 thanks  回復  更多評論   

# re: C++陷阱:virtual析構函數 2016-05-06 16:21 小鍵

只要你覺得你的類會被繼承,那么最好給析構函數加上virtual

--這并不是無腦遵守好嗎,這非常有道理呀。  回復  更多評論   

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            国产综合久久久久影院| 久久久久久九九九九| 久久久久久夜| 欧美一区二区三区免费视| 蜜桃久久av一区| 欧美美女操人视频| 嫩草影视亚洲| 欧美日韩亚洲一区二区三区| 欧美人与性禽动交情品| 国产精品日韩欧美一区二区| 噜噜爱69成人精品| 久久综合网hezyo| 亚洲国产日韩美| 亚洲免费观看| 小黄鸭精品aⅴ导航网站入口| 久久精品麻豆| 欧美日韩色一区| 韩国三级电影久久久久久| 日韩一级大片在线| 久久久精品国产免费观看同学| 老司机免费视频久久| 99ri日韩精品视频| 久久久久久婷| 国产精品老女人精品视频| 国外成人在线| 免费观看日韩| 欧美体内she精视频| 狠狠色香婷婷久久亚洲精品| 亚洲视频你懂的| 欧美国产日本韩| 午夜日韩av| 欧美视频在线观看| 亚洲破处大片| 久久综合一区二区| 亚洲性感激情| 欧美日本久久| 亚洲日本一区二区| 久久人91精品久久久久久不卡| 一本久道综合久久精品| 欧美暴力喷水在线| 久久久久久亚洲综合影院红桃| 欧美精品一区二区三区在线播放| 国产午夜精品一区二区三区欧美| 99re8这里有精品热视频免费| 久久综合九色九九| 午夜精品一区二区三区电影天堂| 欧美日韩中文字幕日韩欧美| 亚洲破处大片| 亚洲欧洲综合另类在线| 久久综合给合| 亚洲成人影音| 欧美成人四级电影| 久久综合久久88| 亚洲第一毛片| 欧美a级片一区| 久久综合中文色婷婷| 亚洲成人在线网| 免费一区视频| 免费中文日韩| 亚洲精品系列| 亚洲精品小视频在线观看| 欧美久久久久久蜜桃| 免费久久99精品国产| 久久国产66| 在线激情影院一区| 欧美国产日韩精品免费观看| 性色av一区二区三区在线观看| 国产深夜精品福利| 久久久亚洲成人| 久久成人精品无人区| 在线观看一区二区视频| 欧美黄在线观看| 欧美美女福利视频| 午夜精品福利视频| 欧美专区18| 亚洲三级毛片| 亚洲尤物在线视频观看| 国产一区二区三区四区hd| 久久综合给合| 欧美精品一线| 午夜天堂精品久久久久| 久久精品二区三区| av成人免费在线观看| 亚洲欧美日韩精品久久久| 曰本成人黄色| 一区二区三区精密机械公司| 国内综合精品午夜久久资源| 亚洲三级国产| 国产主播一区二区三区| 亚洲国产精品ⅴa在线观看| 国产精品sss| 欧美sm视频| 国产老肥熟一区二区三区| 欧美高清日韩| 国产日韩精品在线观看| 最新国产乱人伦偷精品免费网站| 国产精品入口尤物| 欧美激情一区二区三区四区| 国产精品视频1区| 亚洲第一级黄色片| 国产日韩欧美夫妻视频在线观看| 亚洲国产欧美精品| 国产亚洲精品v| 日韩一区二区精品| 在线欧美影院| 性欧美videos另类喷潮| 正在播放亚洲一区| 老色鬼久久亚洲一区二区| 先锋影音一区二区三区| 欧美精品综合| 欧美国产视频在线| 国产亚洲欧美一区二区三区| 99热免费精品| 99热免费精品在线观看| 久久综合伊人77777麻豆| 久久精品午夜| 国产精品电影在线观看| 日韩一区二区精品葵司在线| 亚洲国产视频直播| 校园春色国产精品| 午夜久久美女| 国产精品久久久亚洲一区| 91久久亚洲| 最新国产成人在线观看| 久久婷婷av| 亚洲精品乱码久久久久| 久久精品一区二区三区不卡牛牛 | 另类人畜视频在线| 欧美激情1区2区3区| 奶水喷射视频一区| 在线播放视频一区| 久久全国免费视频| 麻豆精品视频在线观看视频| 国内精品久久久久影院 日本资源| 亚洲欧美日韩精品在线| 欧美在线网址| 欧美成人国产va精品日本一级| 久久久久免费视频| 国产在线精品成人一区二区三区| 午夜国产精品影院在线观看| 午夜视频一区在线观看| 国产精品你懂的在线| 亚洲午夜电影在线观看| 亚洲欧美中文字幕| 国产精品一区在线观看| 亚洲欧美精品在线| 久久久久亚洲综合| 亚洲国产精品久久人人爱蜜臀| 久久一区中文字幕| 亚洲欧洲精品一区二区| 在线亚洲自拍| 国产日韩高清一区二区三区在线| 午夜影院日韩| 免费观看久久久4p| 夜夜嗨av色综合久久久综合网| 欧美午夜精品理论片a级按摩| 亚洲免费网址| 欧美成人r级一区二区三区| 一区二区免费在线播放| 国产女人精品视频| 免费成人av| 亚洲免费在线观看视频| 麻豆精品视频在线| 中文国产成人精品久久一| 国产一二三精品| 欧美精品成人91久久久久久久| 夜夜嗨av一区二区三区网站四季av| 校园春色综合网| 亚洲国产日韩欧美在线图片| 欧美午夜免费影院| 久久深夜福利免费观看| 99国产精品| 欧美大片第1页| 亚洲欧美一区二区三区久久 | 久久国产精品一区二区三区四区 | 在线视频欧美日韩精品| 久久久综合网站| 亚洲性图久久| 在线看日韩欧美| 国产精品伦理| 欧美大色视频| 久久xxxx精品视频| 亚洲精品中文字幕有码专区| 久久综合九色综合网站| 亚洲欧美色一区| 亚洲免费观看高清在线观看| 国产亚洲亚洲| 国产精品高清在线观看| 欧美3dxxxxhd| 久久av二区| 亚洲一区二区三区在线看| 亚洲人体影院| 欧美成人精品一区| 久久久久久久成人| 狠狠爱成人网| 亚洲一区精彩视频| 亚洲精品一区二区三区福利| 欧美大片在线观看一区二区| 欧美中文字幕视频在线观看| 亚洲一区二区三区影院|