開發完項目都需要進行內存泄露的檢測嗎?

大公司開發完一個項目後如何檢測可用性和穩定性,防止系統因為內存泄露、未捕獲異常、性能瓶頸等問題崩潰掉,一般是怎麼做的?


正確使用 _CrtDumpMemoryLeaks 就可以在每次debug模式按F5的時候,程序結束了立即告訴你有沒有泄露,以及這段內存是從哪裡new/malloc出來的。根本就不需要在項目結束之後單獨操心。

做法很簡單,只要每一個cpp文件在預處理器展開之後,最頂部都是

#define _CRTDBG_MAP_ALLOC
#include &
#include &
#define VCZH_CHECK_MEMORY_LEAKS_NEW new(_NORMAL_BLOCK, __FILE__, __LINE__)
#define new VCZH_CHECK_MEMORY_LEAKS_NEW

就可以了。然後再main函數裡面,你覺得你已經把所有東西都是放掉的那一刻調用_CrtDumpMemoryLeaks,然後系統就會告訴你你想的對不對。


用Visual Leak Detector(1.0)--檢測內存泄漏

在程序中引用 vld.h 頭文件,編譯運行後,在Visual C++的Output窗口得到:

Visual Leak Detector Version 1.0 installed (single-threaded static).

WARNING: Visual Leak Detector detected
memory leaks!


---------- Block 43 at 0x003C0880: 20 bytes ---------- --43號塊0x003C0880地址泄漏了20個位元組


Visual Leak Detector detected 1 memory leak.


Visual Leak Detector is now exiting.

如果當前程序沒有內存泄露會有「No memory leaks detected.」信息列印.如下圖

http://pan.baidu.com/s/1jHUsD3g

內含內存泄漏檢測工具及使用說明


Code Review

靜態分析


推薦閱讀:

如何評價基於Volta架構的NVIDIA TITAN V?
ARM架構和MIPS架構以及X86架構的區別是什麼?
如何構建千萬級用戶的後台資料庫?
哪些在操作系統架構設計上的良好方法可以應用在「企業的OS」的設計上?多謝!
Intel會收購Altera嗎?

TAG:測試 | 架構 | 可用性 | 內存泄露 |