zoukankan      html  css  js  c++  java
  • 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	est.cpp(13) : {157} client block at 0x001E9180, subtype 0, 4 bytes long.
     Data: <    > 00 00 00 00 
    f:project1main.cpp(17) : {156} client block at 0x001E9140, subtype 0, 4 bytes long.
     Data: <    > 00 00 00 00 
    Object dump complete.






  • 相关阅读:
    request实现登录
    python之对象
    python基础之迭代与解析
    python基础之函数
    linux expect命令使用入门
    Python socket
    1
    蓝牙
    SQL查询语句
    iOS常用小知识纪录
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/5096951.html
Copyright © 2011-2022 走看看