電腦遊戲製作開發設計論壇 首頁 電腦遊戲製作開發設計論壇
任何可以在PC上跑的遊戲都可以討論,主要以遊戲之製作開發為主軸,希望讓台灣的遊戲人有個討論、交流、教學、經驗傳承的園地
 
 常見問題常見問題   搜尋搜尋   會員列表會員列表   會員群組會員群組   會員註冊會員註冊 
 個人資料個人資料   登入檢查您的私人訊息登入檢查您的私人訊息   登入登入 

Google
[教學]VS使用CRT偵測Memory leak的方法

 
發表新主題   回覆主題    電腦遊戲製作開發設計論壇 首頁 -> 遊戲程式初級班:語法及基礎概念
上一篇主題 :: 下一篇主題  
發表人 內容
babu61509
散播福音的祭司


註冊時間: 2007-08-26
文章: 142

681.01 果凍幣

發表發表於: 2009-6-2, PM 1:01 星期二    文章主題: [教學]VS使用CRT偵測Memory leak的方法 引言回覆

首先,在所有文件都需要include的.h檔放入 :
代碼:

#ifdef _DEBUG      // 檢查記憶體洩漏用(頂)
   #define _CRTDBG_MAP_ALLOC
   #include <stdlib.h>
   #include <crtdbg.h>
   #define MYDEBUG_NEW   new( _NORMAL_BLOCK, __FILE__, __LINE__)
   #define new MYDEBUG_NEW
   // Replace _NORMAL_BLOCK with _CLIENT_BLOCK if you want the
   //allocations to be of _CLIENT_BLOCK type
#else
   #define MYDEBUG_NEW
#endif // _DEBUG


然後再到程式進入點貼上 :
代碼:

#ifdef _DEBUG   // 檢查記憶體洩漏用(進入點)
   _CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF );
#endif


這樣程式結束以後會在 輸出 那邊顯示,你有哪些檔案行數的 memory 沒有釋放掉。
完 (跑

-----------------------------------------
如果有特殊new用法,請將以下註解起來:
代碼:

   #define MYDEBUG_NEW   new( _NORMAL_BLOCK, __FILE__, __LINE__)
   #define new MYDEBUG_NEW

不過這樣訊息就不會顯示是哪行宣告的了,所以然後改用_CrtSetBreakAlloc()在指定次數中斷來查看。(要加在程式進入點)
ex: 第45次new的時候中斷
代碼:

_CrtSetBreakAlloc(45);

_________________
已經畢業了!!


babu61509 在 2011-12-17, PM 10:29 星期六 作了第 3 次修改
回頂端
檢視會員個人資料 發送私人訊息

稍嫌羞澀的路人


註冊時間: 2009-08-06
文章: 2

11.14 果凍幣

發表發表於: 2009-8-6, AM 12:17 星期四    文章主題: 引言回覆

thx~~
我再googlg一下,看詳細的
回頂端
檢視會員個人資料 發送私人訊息

稍嫌羞澀的路人


註冊時間: 2009-08-06
文章: 2

11.14 果凍幣

發表發表於: 2009-8-6, AM 12:53 星期四    文章主題: 引言回覆

http://www.vckbase.com/document/viewdoc/?id=1349

有興趣可以看一下
回頂端
檢視會員個人資料 發送私人訊息
從之前的文章開始顯示:   
發表新主題   回覆主題    電腦遊戲製作開發設計論壇 首頁 -> 遊戲程式初級班:語法及基礎概念 所有的時間均為 台灣時間 (GMT + 8 小時)
1頁(共1頁)

 
前往:  
無法 在這個版面發表文章
無法 在這個版面回覆文章
無法 在這個版面編輯文章
無法 在這個版面刪除文章
無法 在這個版面進行投票
可以 在這個版面附加檔案
可以 在這個版面下載檔案


Powered by phpBB © 2001, 2005 phpBB Group
正體中文語系由 phpbb-tw 維護製作