??????? 題目描述很簡單:內(nèi)存泄露了,現(xiàn)象是看到該程序的內(nèi)存占用率不斷增長,作為一個程序員你怎么解決這個問題?
??????? 我答的不好,回來之后又好好的想了想,其實回答這個問題應(yīng)該從不同的方面來考慮
??????? 首先分析內(nèi)存泄露容易發(fā)生的情況,《OOP啟示錄》對這些情況都講得挺詳細(xì)的,在類的構(gòu)造函數(shù)與析構(gòu)函數(shù)中沒有匹配地調(diào)用 new/delete!沒有正確地清除嵌套的對象指針!在釋放對象數(shù)組時,沒有使用delete [];指向由指向?qū)ο蟮闹羔槝?gòu)成的數(shù)組不等同于與對象數(shù)組。缺少拷貝構(gòu)造函數(shù),編譯器缺省添加的拷貝構(gòu)造函數(shù)不足,缺省的拷貝構(gòu)造函數(shù)采用位拷貝!......用我自己的想法描述就是,每次自己分配一塊內(nèi)存區(qū)域的時候,都要想到用完之后要將該內(nèi)存區(qū)釋放掉!當(dāng)然特殊的情形這句話不適用。
?????? 既然知道了內(nèi)存泄露事件的多發(fā)地帶,我們可以多在這些地方設(shè)置檢察機(jī)制,相對來說就有一點針對性了!面試官說這樣是一種解決辦法,可能10000個函數(shù),我們可以把錯誤范圍縮小到200個,然后你還有什么辦法繼續(xù)解決這個問題?
??????我基本上是把我暫時能想到的都說了,什么設(shè)置斷點調(diào)試啊,用IDE工具看地址變化。。。不過好像都不能達(dá)到面試官滿意度。。。
????? 他說沒有這樣的IDE工具給你用,接著你怎么解決?
????? 唉。。。受打擊了,事實如此,我對這個不夠理解。。。
???? 之后上網(wǎng)想找找內(nèi)存泄露相關(guān)的資料,搜出來的文章大部分都是林銳高質(zhì)量C++編程里關(guān)于內(nèi)存的那篇,大感失望,怎么就沒有其他更好更深入的文章了呢???
???? 大家討論討論,我相信這個問題挺具有代表性的,大家討論出個結(jié)果,都弄懂了豈不是更好?
posted on 2006-05-13 02:42
季浩 閱讀(2186)
評論(10) 編輯 收藏 引用 所屬分類:
心得體會