日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

利用CRT库函数检查内存泄漏

發布時間:2025/3/15 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 利用CRT库函数检查内存泄漏 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

條件:

1. 在Debug模式下。

2.#define _CRTDBG_MAP_ALLOC
?? #include "stdlib.h"
?? #include "crtdbg.h"

?

_CrtDumpMemoryLeaks()可以打印出目前為止沒有釋放的已申請內存。

// Necessary #define _CRTDBG_MAP_ALLOC #include "stdlib.h" #include "crtdbg.h"int main() {int* p = new int(2);// Report memory leak until now._CrtDumpMemoryLeaks();delete p;return 0; }

?

上述代碼輸出如下:

Detected memory leaks!
Dumping objects ->
{53} normal block at 0x00394FC0, 4 bytes long.
Data: <??? > 02 00 00 00
Object dump complete.

其中{53}表示第53次申請的內存沒有釋放。

?

_CrtSetBreakAlloc(long n)可以在Debug時讓程序自動在第n次申請內存的代碼處停止。

// Necessary #define _CRTDBG_MAP_ALLOC #include "stdlib.h" #include "crtdbg.h"int main() {_CrtSetBreakAlloc(53);int* p = new int(2);// Report memory leak until now._CrtDumpMemoryLeaks();delete p;return 0; }

?

在Debug上述代碼時,可以在程序停止處查看調用堆棧找到引起泄漏的內存分配代碼:

?

當程序有多個退出點時,可以調用Using _CrtSetDbgFlag()讓程序在結束時輸出內存泄漏信息。

// Necessary #define _CRTDBG_MAP_ALLOC #include "stdlib.h" #include "crtdbg.h"int main() {_CrtSetDbgFlag( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);int* p = new int(2);return 0; } ?

轉載于:https://www.cnblogs.com/playerken/archive/2011/08/24/2152534.html

總結

以上是生活随笔為你收集整理的利用CRT库函数检查内存泄漏的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。