內存泄露十分討厭,捕獲內存泄露更加使人厭煩……函數
其實,VS自己就有內存泄露的檢測機制。只需作如下操做便可開啓。(同時必須在debug模式 下運行程序而且以 正常流程退出 )spa
而後在以 正常流程退出 程序後, 就會在輸出窗口顯示出內存泄露的信息了。.net
注意!重點來了。debug
雖然VS檢測出來了哪裏有了內存泄露, 可是有可能你獲得的有效信息只有兩個 (以下)code
1. 未釋放的內存大小。(綠色部分 )orm
2. 這塊內存是程序中總計第幾個被申請的。(藍色部分 )。blog
3. 而申請空間所在代碼的位置可能不會被顯示(刪除線部分 )。ip
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.
那麼, 若是出現了這種狀況, 實際上是根本沒法知道哪裏出了問題。那麼這個時候該怎麼辦呢?內存
這個時候須要使用這個函數。get
這個函數的做用是,在你運行程序的時候,會在第num次申請空間時斷點。
因此,你須要從新運行一遍程序 。(只要流程同樣,內存申請順序確定是同樣的,因此會正確的在須要的地方斷掉。)
注意,以前提示的內存泄露中大括號內的數值就是指的第幾回申請的空間泄露了。
這個時候查看堆棧調用 ,便可知道究竟是在哪裏申請了內存可是忘記釋放掉了。而後將這塊內存在合適的時候釋放掉就好了。