1. 程式人生 > >【轉】_CrtSetBreakAlloc 內存泄漏

【轉】_CrtSetBreakAlloc 內存泄漏

接口 發生 pan 定位 image 部分 方便 博客 clu

聲明:本內容轉載自 https://my.oschina.net/gp8wLHNUeKd2C/blog/110707

在使用VS開發過程中,(今日)遇到內存泄漏的情況。具體表現為:

在輸出窗口中,顯示:

技術分享

項目代碼翻了個遍都沒看出問題在哪。此時,可通過 _CrtSetBreakAlloc(); 接口,進行簡單的內存泄漏檢查。

具體使用方法:在 main 函數中,直接第一句前加上 _CrtSetBreakAlloc(12866); 然後以 debug 模式下運行。此時,vs會直接幫忙定位到具體發生內存泄漏的位置(註意:是以中斷的形式定位的)。


下面是轉載博客的部分需要註意的地方的原文內容(方便查閱,故copy放於此):

或者 在頭文件添加如下代碼

// 在入口函數cpp中添加以下定義和頭文件   
#define CRTDBG_MAP_ALLOC   
#include <stdlib.h>   
#include <crtdbg.h>   



如果用VisualLeakDetector無法找到內存溢出代碼對應的位置的時候,要首先查看如下操作

1.當前程序路徑是否包含中文,VisualLeakDetector對中文不能支持

2.打算查看的DLL是否包含了"#include <vld.h>",每個打算查看的DLL都要在原DLL的代碼中添加"
#include <vld.h>" 3.不能在當前程序路徑中包含VisualLeakDetector安裝路徑下的任何文件。

【轉】_CrtSetBreakAlloc 內存泄漏