內(nèi)存泄漏很難追查,因為不能輕松地在內(nèi)存中查看哪些對象在使用中,以及最初把對象分配到什么內(nèi)存中。然而有一些程序可以自動完成這項工作。有很多內(nèi)存泄漏檢測工具,從昂貴的專業(yè)的軟件包可以免費下載的工具。如果使用的是Microsoft Visual C++,其中調(diào)試庫內(nèi)建了內(nèi)存泄漏檢測的支持。這個內(nèi)存泄漏檢測默認情況下沒有啟用,除非創(chuàng)建的是MFC項目。要在其他項目中啟用它,需要在代碼開頭添加三行代碼。
  請注意新定義的new運算符在語句中,所以只有在編譯調(diào)試版的應用程序時,才會使用新的new。這通常就是所需要的。發(fā)行版通常不會執(zhí)行任何內(nèi)存泄漏的檢測。
  這行代碼告訴Visual C++CRT(C運行時)庫,在應用程序退出時,將所有檢測到內(nèi)存泄漏寫入測試輸出控制臺。對于前面那個存在內(nèi)存泄漏的程序,調(diào)試控制臺應該會包含以下輸出。
  這個輸出清楚地表明了在哪個文件的哪一行分配了內(nèi)存但是沒有釋放。文件名后面括號中的數(shù)字就是行號。話括號之間的數(shù)字是內(nèi)存分配的計數(shù)器。例如,(147)表示這是程序開始之后進行的第147次分配??梢允褂肰C++的CrtSetBreak AllocO函數(shù)告訴VC++調(diào)試運行時,進行特定分配時進入調(diào)試器。
  在這個有內(nèi)存泄漏的程序中,有兩處泄漏——第一個Simple對象沒有釋放,這個對象在堆中創(chuàng)建的整數(shù)也沒有釋放。在Visual C++的調(diào)試器輸出窗口中,只需要雙擊某個內(nèi)存泄漏,就可以自動跳到代碼中的那一行。
  通過這些工具提供的信息,可以找到實際的問題。通常情況下,需要逐步跟蹤代碼,找到指向某個對象的指針在哪里改寫了,而原始對象卻沒有釋放。大多數(shù)調(diào)試器都提供了“觀察點”功能,用于在發(fā)生這類事件時中斷程序的執(zhí)行。

workwin屏幕監(jiān)控軟件

 

★關(guān)于WorkWin公司電腦監(jiān)控軟件★

WorkWin的使命是打造Work用途的Windows 電腦系統(tǒng),有效規(guī)范員工上網(wǎng)行為,讓老板知道員工每天在做什么(監(jiān)控包括屏幕、上網(wǎng)在內(nèi)的一舉一動),限制員工不能做什么(禁止網(wǎng)購、游戲、優(yōu)盤等)。

WorkWin基于純軟件設計,非常容易使用,無需添加或改動任何硬件,使用一臺管理機監(jiān)控全部員工機電腦。歷經(jīng)南京網(wǎng)亞十余年精心打造,此時此刻每天都有成千上萬企業(yè)電腦正在運行WorkWin,選擇WorkWin選擇“贏”。

WorkWin介紹

WorkWin監(jiān)控首頁 短視頻講解 下載免費試用版

版權(quán)所有,南京網(wǎng)亞計算機有限公司 。本文鏈接地址: 通過Visual C++在Windows中查找并修復內(nèi)存泄漏