• <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>
            面對(duì)現(xiàn)實(shí),超越自己
            逆水行舟,不進(jìn)則退
            posts - 269,comments - 32,trackbacks - 0

            有一天有個(gè)同事在通過(guò)vld調(diào)試一個(gè)內(nèi)存泄漏問(wèn)題,折騰了很久然后找到我。我瞥了一眼他的代碼,發(fā)現(xiàn)問(wèn)題和我曾經(jīng)遇到的一模一樣:

             1 class Base {
             2 public:
             3     ~Base();
             4 };
             5 
             6 class Derived : public Base {
             7 privated:
             8     std::vector<int> m_data;    };
             9 
            10 Base *obj = new Derived();
            11 delete obj;

            當(dāng)然,實(shí)際代碼比這個(gè)復(fù)雜得多(這也是導(dǎo)致從發(fā)現(xiàn)問(wèn)題到找到問(wèn)題耗費(fèi)大量時(shí)間的原因)。vld在報(bào)內(nèi)存泄漏時(shí),當(dāng)然報(bào)的位置是new的地方。這個(gè)同事檢查了這個(gè)對(duì)象的整個(gè)生命周期,確定他正確地釋放了這個(gè)對(duì)象。

            問(wèn)題的關(guān)鍵就在于:Base類的析構(gòu)函數(shù)不是virtual。因?yàn)椴皇?/span>virtual,所以在對(duì)一個(gè)Base類型的指針進(jìn)行delete時(shí),就不會(huì)調(diào)用到派生類Derived的析構(gòu)函數(shù)。而派生類里的析構(gòu)函數(shù)會(huì)用于析構(gòu)其內(nèi)部的子對(duì)象,也就是這里的m_data。這樣,就造成了內(nèi)存泄漏。

            這其實(shí)是一個(gè)很低級(jí)的失誤。但毫不客氣地說(shuō)C++中有很多這種少個(gè)關(guān)鍵字或者代碼位置不對(duì)就會(huì)造成另一個(gè)結(jié)果的例子。事實(shí)上,針對(duì)這些悲劇也有很多書(shū)提出一些準(zhǔn)則來(lái)讓大家去無(wú)腦遵守。例如針對(duì)這個(gè)例子,我就記得曾有書(shū)說(shuō),只要你覺(jué)得你的類會(huì)被繼承,那么最好給析構(gòu)函數(shù)加上virtual。

            posted on 2012-09-14 13:54 王海光 閱讀(422) 評(píng)論(0)  編輯 收藏 引用 所屬分類: C++
            国产成人AV综合久久| 久久成人小视频| 亚洲国产精品无码成人片久久| 久久人人爽人人爽人人片av麻烦 | 亚洲人成电影网站久久| 综合网日日天干夜夜久久 | 国产午夜电影久久| 久久亚洲高清观看| 思思久久99热免费精品6| 久久99国产精品久久99小说| 亚洲国产精品成人久久蜜臀| 2021少妇久久久久久久久久| 久久亚洲中文字幕精品一区| 99久久99久久精品免费看蜜桃| 久久综合亚洲欧美成人| 四虎国产精品免费久久| 日本欧美国产精品第一页久久| 免费精品国产日韩热久久| 97精品伊人久久久大香线蕉| 日韩人妻无码精品久久久不卡| 久久午夜羞羞影院免费观看| 久久久久四虎国产精品| 精品国产青草久久久久福利 | 国产精品99久久精品爆乳| 久久精品国产亚洲Aⅴ香蕉| 99久久精品午夜一区二区| 精品综合久久久久久98| 亚洲国产一成人久久精品| 久久久久国产一级毛片高清版| 久久夜色精品国产www| 亚洲va国产va天堂va久久| 国产成人99久久亚洲综合精品| 久久亚洲精品成人无码网站| 国产精品久久久久久久久免费 | 青青热久久综合网伊人| 久久午夜免费视频| 色综合久久精品中文字幕首页| 久久天天躁狠狠躁夜夜不卡| 亚洲午夜久久影院| 丁香久久婷婷国产午夜视频| 久久精品国产2020|