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

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 閱讀(4560) 評論(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>
            欧美理论片在线观看| 西西人体一区二区| 欧美日韩性视频在线| 欧美精品久久99久久在免费线| 久久婷婷综合激情| 免播放器亚洲一区| 欧美激情女人20p| 欧美噜噜久久久xxx| 欧美三级电影一区| 国产午夜精品久久久久久久| 国语自产在线不卡| 亚洲日韩欧美一区二区在线| 亚洲男人av电影| 久久看片网站| 亚洲国产综合91精品麻豆| 亚洲福利国产精品| 中文av一区特黄| 久久久精品国产免费观看同学| 麻豆亚洲精品| 国产精品爽黄69| 亚洲欧洲美洲综合色网| 一卡二卡3卡四卡高清精品视频| 亚洲永久字幕| 欧美高清在线视频| 亚洲尤物视频网| 欧美91精品| 国产欧美日韩一级| 日韩午夜精品| 久久影院午夜论| 洋洋av久久久久久久一区| 久久se精品一区精品二区| 欧美三级电影大全| 亚洲国内精品| 久久琪琪电影院| 亚洲素人在线| 欧美国产激情| 国产一区日韩欧美| 亚洲一区图片| 亚洲欧洲一区二区三区| 欧美在线精品免播放器视频| 欧美三级电影精品| 亚洲激情视频网| 久久狠狠久久综合桃花| 一本大道av伊人久久综合| 老色鬼久久亚洲一区二区| 国产精品网站在线观看| 99re热这里只有精品视频 | 亚洲最新视频在线播放| 久久精品国产999大香线蕉| 国产精品美女www爽爽爽视频| 亚洲激情视频在线| 欧美成人福利视频| 久久三级视频| 有码中文亚洲精品| 老巨人导航500精品| 欧美在线999| 国产婷婷色一区二区三区在线 | 在线欧美不卡| 久久免费视频在线观看| 欧美一级黄色录像| 国产偷久久久精品专区| 久久国内精品视频| 久久xxxx精品视频| 国内在线观看一区二区三区| 久久精品国产第一区二区三区最新章节 | 日韩视频中文| 亚洲日本成人网| 欧美揉bbbbb揉bbbbb| 亚洲欧美一区二区原创| 亚洲一区免费在线观看| 国产欧美69| 免费成年人欧美视频| 免费人成精品欧美精品| 日韩天堂在线观看| 亚洲小说欧美另类社区| 国产亚洲午夜| 欧美激情1区2区| 欧美日韩系列| 久久精品国产99国产精品澳门| 性欧美1819性猛交| 亚洲国产美女精品久久久久∴| 亚洲激情另类| 国产精品热久久久久夜色精品三区| 欧美一区二视频在线免费观看| 久久国产精品久久久久久电车| 亚洲国产成人porn| 亚洲精品一区二区在线| 国产精品v日韩精品| 久久综合九色综合久99| 欧美精品免费在线观看| 欧美一区免费视频| 美日韩在线观看| 亚洲永久免费av| 久久欧美中文字幕| 亚洲欧美中文日韩在线| 久久综合久色欧美综合狠狠| 亚洲无亚洲人成网站77777| 久久精品国产精品亚洲| 亚洲一区二区三区久久| 久久综合色8888| 久久国产精品亚洲va麻豆| 欧美黄色网络| 久久躁狠狠躁夜夜爽| 欧美日韩在线播放| 亚洲精品视频在线观看免费| 亚洲一区二区三区午夜| 亚洲人成网站999久久久综合 | 欧美成年网站| 久久精品在线| 国产精品女同互慰在线看| 亚洲日本在线观看| 91久久精品国产91久久| 欧美一区二区视频观看视频| 亚洲图片欧美一区| 欧美精品18+| 欧美18av| 海角社区69精品视频| 夜夜夜精品看看| 日韩亚洲一区二区| 久久精品国产亚洲精品| 亚洲专区一二三| 欧美人与禽性xxxxx杂性| 另类成人小视频在线| 国产亚洲人成网站在线观看| 亚洲午夜免费视频| 亚洲欧美日韩精品综合在线观看| 欧美精品导航| 亚洲精品久久久久中文字幕欢迎你| 亚洲国产精品一区制服丝袜| 久久理论片午夜琪琪电影网| 老司机成人网| 亚洲国产精品电影在线观看| 久久久久久久999精品视频| 欧美在线播放一区二区| 国产精品美女久久久免费| 一片黄亚洲嫩模| 亚洲无毛电影| 国产精品久久久久久久久| 正在播放亚洲| 欧美亚洲在线播放| 国产乱码精品一区二区三区五月婷| 亚洲精品中文字幕在线| 久久婷婷麻豆| 亚洲高清在线观看| 9i看片成人免费高清| 欧美激情在线| 亚洲美女中文字幕| 亚洲欧美成人网| 国产日韩综合一区二区性色av| 性感少妇一区| 欧美激情国产高清| 在线视频欧美日韩精品| 国产精品欧美在线| 久久精品中文字幕一区| 欧美成人首页| 9色国产精品| 国产精品视频导航| 欧美亚洲一区二区在线观看| 久久久国产亚洲精品| 在线日韩一区二区| 欧美日本一区| 亚洲欧美日韩一区在线| 免费亚洲一区| av72成人在线| 国产一区二区按摩在线观看| 玖玖在线精品| 亚洲在线中文字幕| 亚洲国产专区| 久久久精品动漫| 国产精品99久久久久久久久久久久| 国产欧美一区二区白浆黑人| 麻豆精品在线视频| 亚洲欧美日韩国产一区二区三区 | 蜜桃av噜噜一区| 99re6这里只有精品| 国产欧美日韩另类一区| 麻豆精品视频在线| 亚洲一区二区三区免费视频| 久热综合在线亚洲精品| 亚洲天堂av图片| 亚洲高清123| 国产麻豆精品在线观看| 欧美成人一品| 欧美在线短视频| 亚洲精选大片| 欧美成人午夜免费视在线看片| 亚洲视频免费在线| 91久久久亚洲精品| 黑人巨大精品欧美黑白配亚洲| 欧美婷婷在线| 欧美h视频在线| 久久狠狠久久综合桃花| 欧美一区二区三区免费视频| 在线国产欧美| 国产色产综合色产在线视频| 欧美日韩亚洲视频| 欧美a一区二区| 玖玖综合伊人| 久久久精品五月天| 午夜亚洲福利在线老司机|