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

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 閱讀(4573) 評論(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>
            亚洲国产高清一区二区三区| 国产精品无码专区在线观看| 欧美激情亚洲另类| 国产日韩欧美自拍| 在线亚洲美日韩| 欧美全黄视频| 亚洲国产女人aaa毛片在线| 久久激情五月丁香伊人| 亚洲视频久久| 国产精品久久久久7777婷婷| 亚洲影院高清在线| 国产精品99久久久久久宅男| 欧美日韩中文在线| 一区二区三区视频在线看| 亚洲国产精品视频一区| 欧美中文在线观看| 国产一区二区三区的电影| 性欧美超级视频| 亚洲综合久久久久| 国产欧美日韩一区二区三区在线| 亚洲综合第一页| 在线视频你懂得一区| 国产精品国产自产拍高清av王其 | 国产专区精品视频| 久久久欧美精品| 久久亚洲视频| 亚洲精选国产| 亚洲精品日韩一| 欧美一区二区三区免费视频| 久久亚洲精品视频| 久久午夜电影网| 亚洲激情在线| 亚洲久久在线| 国产精品爽爽爽| 久久夜精品va视频免费观看| 麻豆久久久9性大片| 夜夜夜久久久| 亚洲欧美在线磁力| 国内外成人免费视频 | 亚洲精品专区| 国产精品久久久久毛片软件 | 91久久精品日日躁夜夜躁欧美| 欧美人妖在线观看| 欧美亚洲一级| 久久中文字幕一区| 夜夜爽www精品| 欧美一区精品| 亚洲美女色禁图| 亚洲午夜激情| 欧美一级成年大片在线观看| 91久久精品国产91久久性色tv| 亚洲精品午夜| 经典三级久久| 在线一区二区三区四区| 好看的av在线不卡观看| 亚洲伦理在线| 原创国产精品91| 亚洲视频在线观看免费| 亚洲高清成人| 性欧美videos另类喷潮| 夜夜夜久久久| 久久男人资源视频| 亚洲免费在线电影| 老司机67194精品线观看| 亚洲影院免费观看| 麻豆av一区二区三区| 欧美亚洲综合另类| 欧美激情综合网| 久久一二三四| 国产精品五区| 夜夜嗨av一区二区三区四区| 亚洲国产一区二区三区a毛片| 亚洲砖区区免费| 亚洲性视频网址| 欧美精品激情在线观看| 欧美+日本+国产+在线a∨观看| 国产精品在线看| 在线一区二区日韩| 亚洲性视频网站| 欧美日韩色一区| 亚洲国产1区| 在线观看日韩国产| 久久精品首页| 欧美在线观看一区二区三区| 欧美日韩一视频区二区| 亚洲人屁股眼子交8| 亚洲黄色在线观看| 久久九九免费视频| 欧美日韩三区| 亚洲国产精品一区二区第一页| 欧美区二区三区| 亚洲国产精品va在线观看黑人| 欧美亚洲一区二区在线| 欧美一区二区三区在线| 国产精品欧美日韩一区二区| 亚洲深夜激情| 亚洲综合第一| 国产精品婷婷午夜在线观看| 亚洲资源av| 久久se精品一区二区| 国产日本欧美一区二区三区在线 | 国产精品豆花视频| 一本大道久久精品懂色aⅴ | 亚洲视频观看| 欧美一级视频一区二区| 国产精品入口| 亚洲在线一区二区三区| 欧美有码在线观看视频| 国产视频一区三区| 欧美中文字幕第一页| 猫咪成人在线观看| 亚洲六月丁香色婷婷综合久久| 欧美日韩第一区日日骚| 一区二区三区欧美在线| 欧美与欧洲交xxxx免费观看| 精品白丝av| 欧美久久一级| 亚洲一区在线播放| 久久综合给合久久狠狠色| 亚洲激情偷拍| 国产精品久久久久一区二区| 午夜视频一区在线观看| 免费在线日韩av| 一本大道久久a久久综合婷婷| 国产精品久久久一本精品| 久久成人免费电影| 亚洲人成久久| 久久精品人人做人人爽| 91久久国产自产拍夜夜嗨| 国产精品成人久久久久| 久久精品国产99精品国产亚洲性色 | 亚洲人成艺术| 久久精品理论片| 亚洲美女av网站| 国产视频亚洲| 欧美日韩另类一区| 欧美在线精品一区| 亚洲精品久久久久久久久久久| 性欧美超级视频| 日韩一二三区视频| 国内揄拍国内精品少妇国语| 欧美日韩精品一本二本三本| 欧美一区二区性| 亚洲最新在线视频| 欧美韩国在线| 欧美一级成年大片在线观看| 一区二区免费在线播放| 一区二区三区在线视频播放| 国产精品不卡在线| 欧美日韩 国产精品| 国内精品久久久久国产盗摄免费观看完整版| 久久久免费精品视频| 这里只有精品视频| 裸体一区二区| 久久精品首页| 亚洲欧美日韩国产中文| 久久久激情视频| 亚洲一二三区在线| 欧美黄色片免费观看| 欧美一级视频| 亚洲永久在线观看| 99精品99| 亚洲免费激情| 亚洲日本理论电影| 影音先锋日韩资源| 狠久久av成人天堂| 国产一区在线免费观看| 国产精品一区二区在线观看不卡| 欧美视频不卡| 国产精品理论片| 欧美日韩一级黄| 欧美视频国产精品| 欧美性色视频在线| 国产精品日日摸夜夜添夜夜av| 国产精品久久久久久久久久直播| 亚洲精品在线视频| 日韩一区二区高清| 一区二区国产日产| 亚洲日本久久| 亚洲黄色在线观看| 欧美成人午夜激情在线| 玖玖国产精品视频| 女人色偷偷aa久久天堂| 亚洲二区在线观看| 一区二区自拍| 国产三区精品| 国产一区二区三区电影在线观看| 欧美日韩国产精品一卡| 欧美大学生性色视频| 欧美激情久久久| 欧美久久成人| 欧美成人精品一区二区| 久热国产精品| 欧美激情一区二区三区在线| 亚洲欧美国产77777| 亚洲国产激情| 亚洲国产精品va在线观看黑人| 国内伊人久久久久久网站视频 | 亚洲国产精品va| 尤物网精品视频|