天天看點

visual studio如何檢查記憶體洩露?

Visual Studio有專門的插件叫做Visual Leak Detector (VLD)

Visual Leak Detector for Visual C++ 2008/2010/2012/2013

安裝之後,他會給你加入幾個頭檔案和lib,原理可以參考這裡

Visual Leak Detector

使用方法非常簡單,隻需要在你的檢測cpp加上這樣一句話

#include <vld.h>           

然後使用debug模式運作,如果有記憶體洩露,會在Output視窗打出詳細的洩露的堆棧,輕按兩下堆棧就可以定位到自己的代碼(我故意加把一個delete注釋掉得到如下截圖)

visual studio如何檢查記憶體洩露?
visual studio如何檢查記憶體洩露?

==========================================================

clang有一個編譯選項,不知道哪個版本才開始有的。

-fsanitize=address

然後對于下面這段代碼,

int main() {
    int *p = new int(100);

    return 0;
}
           

運作會直接出錯.

=================================================================

==18414==ERROR: LeakSanitizer: detected memory leaks

Direct leak of 4 byte(s) in 1 object(s) allocated from:

#0 0x43345b in operator new(unsigned long) (/tmp/a.out+0x43345b)

#1 0x4b8569 in main (/tmp/a.out+0x4b8569)

#2 0x7f909df7803f in __libc_start_main (/usr/lib/libc.so.6+0x2003f)

SUMMARY: AddressSanitizer: 4 byte(s) leaked in 1 allocation(s).

作者:知乎使用者

連結:https://www.zhihu.com/question/26729933/answer/33848182

來源:知乎

著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。