1. 程式人生 > >記憶體洩露如何除錯

記憶體洩露如何除錯

三、Detected memory leaks! Dumping objects -> C:\PROGRAM FILES\VISUAL STUDIO\MyProjects\leaktest\leaktest.cpp(20) : {18} normal block at 0x00780E80, 64 bytes long. Data: < > CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD Object dump complete.如果你沒有使用#define _CRTDBG_MAP_ALLOC語句的話,輸出資訊將如下: Detected memory leaks! Dumping objects -> {18} normal block at 0x00780E80, 64 bytes long. Data: < > CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD Object dump complete.像你所看到的,當_CRTDBG_MAP_ALLOC 被定義後_CrtDumpMemoryLeaks給了你很多有用的資訊。在沒有定義_CRTDBG_MAP_ALLOC 的情況下,顯示資訊包含: 1.記憶體分配的編號(大括弧中的數字); 2.記憶體塊的型別(普通型、客戶端型、CRT型); 3.16進製表示的記憶體位置; 4.記憶體快的大小; 5.前16bytes的內容。如果定義了_CRTDBG_MAP_ALLOC ,輸出資訊還包含當前洩漏記憶體是在那個檔案中被分配的定位資訊。檔名後圓括弧中的數字是行數。如果你雙擊這行資訊, C:\PROGRAM FILES\VISUAL STUDIO\MyProjects\leaktest\leaktest.cpp(20) : {18} normal block at 0x00780E80, 64 bytes long.游標就會跳轉到原檔案中分配這個記憶體的行前。選擇Output中的題是行,按F4能達到同樣的效果