vs2010調試內存泄露 a CMFCVisualManager object at $01481660, 200 bytes long

ExitInstance 成員函數
 
每當應用程序的副本終止時(通常是因爲用戶退出應用程序),都調用 CWinApp 類的 ExitInstance 成員函數。

如果需要進行特殊的清理處理(如釋放圖形設備接口 (GDI) 資源或釋放程序執行期間使用的內存),請重寫 ExitInstance。但文檔和視圖等標準項的清理工作由框架提供,其他可重寫函數將用於特定於那些對象的特殊清理工作。

 

在你的CXXXApp類“屬性”的“重寫”裏面~

 

在調試程序出現內存泄露:
Detected memory leaks!
Dumping objects ->
{914} client block at 0x01481660, subtype c0, 200 bytes long.
a CMFCVisualManager object at $01481660, 200 bytes long



到網上搜索了一下,找到了答案。原因在於VS2008中MFC程序中的應用程序類都派生自CWinAppEx,VS 2008的程序裏有一個CMFCVisualManager類的全局對象,負責管理可視化界面,具體來說就是一個單件(設計模式中的單件模式),CWinAppEx類的ExitInstance函數可以析構這個對象。但是以往的MFC程序的應用程序類都派生自CWinApp,因爲需要在ExitInstance函數手動這個類對象,具體就是在應用程序類的ExitInstance函數添加代碼

 

CMFCVisualManager::DestroyInstance( TRUE );

發佈了11 篇原創文章 · 獲贊 40 · 訪問量 32萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章