開發完項目都需要進行內存泄露的檢測嗎?
大公司開發完一個項目後如何檢測可用性和穩定性,防止系統因為內存泄露、未捕獲異常、性能瓶頸等問題崩潰掉,一般是怎麼做的?
正確使用 _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 detectedmemory 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嗎?