首页 > 代码库 > c++内存泄漏处理(积累)
c++内存泄漏处理(积累)
写c++程序时,经常会出现内存泄漏的问题,这里从网上找了一种很麻烦的方法:如果想找到每个cpp文件的内存泄漏,都必须在每个cpp加上如下代码:
#include <crtdbg.h> #ifdef _DEBUG #define DEBUG_CLIENTBLOCK new(_CLIENT_BLOCK, __FILE__, __LINE__) #define new DEBUG_CLIENTBLOCK #else #define DEBUG_CLIENTBLOCK #endif
下面给出一段测试的代码
test.h
#include <memory.h> void funNew();test.cpp
#include "text.h" #include <crtdbg.h> #ifdef _DEBUG #define DEBUG_CLIENTBLOCK new(_CLIENT_BLOCK, __FILE__, __LINE__) #define new DEBUG_CLIENTBLOCK #else #define DEBUG_CLIENTBLOCK #endif void funNew() { int *p = new int(); }main.cpp
#include <iostream> #include <assert.h> #include "text.h" #include <crtdbg.h> #ifdef _DEBUG #define DEBUG_CLIENTBLOCK new(_CLIENT_BLOCK, __FILE__, __LINE__) #define new DEBUG_CLIENTBLOCK #else #define DEBUG_CLIENTBLOCK #endif int main() { _CrtSetDbgFlag (_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF); int* p = new int(); funNew(); //delete p; return 0; }
输出
Detected memory leaks! Dumping objects -> f:\project1\test.cpp(13) : {157} client block at 0x001E9180, subtype 0, 4 bytes long. Data: < > 00 00 00 00 f:\project1\main.cpp(17) : {156} client block at 0x001E9140, subtype 0, 4 bytes long. Data: < > 00 00 00 00 Object dump complete.
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。