CC++检查内存泄漏

CC++检查内存泄漏,第1张

如果大家使用的是 Windows + Visual Studio 的话,有一个简单的方法,就是在让所有*.cpp文件在预处理之后,最上面都是这几行:

#define _CRTDBG_MAP_ALLOC
#include 
#include 
#define NEW_WITH_MEMORY_LEAK_CHECKING new(_NORMAL_BLOCK, __FILE__, __LINE__)
#define new NEW_WITH_MEMORY_LEAK_CHECKING

方法有几个:

如果你的程序有多个cpp,那可以把这一段写在一个大家都会直接或间接#include的头文件里面,而且最好放在最开头
在上面的一种情况下,如果 Visual Studio 建立的工程还使用了预编译文件头,那可以把这几行贴在stdafx.h的最上方。
如果你的程序只有一个cpp,那直接贴在cpp文件的最上方就好了
接下来,你需要在程序即将运行完毕的阶段,添加以下代码:

 _CrtDumpMemoryLeaks();

你可以将其添加到主函数的return 0;语句上方。

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include

#define _CRTDBG_MAP_ALLOC
#include 
#include 
#define NEW_WITH_MEMORY_LEAK_CHECKING new(_NORMAL_BLOCK, __FILE__, __LINE__)
#define new NEW_WITH_MEMORY_LEAK_CHECKING


using namespace std;


struct Point
{
    int x;
    int y;
};

int main()
{
    Point a{ 1, 2 };
    Point b = a;

    Point* c = new Point{ 1, 2 };
    Point* d = c;
    a.x = 10;
    c->x = 10;
    cout << &a << &b << endl;
    cout << b.x << "," << d->x << endl;
    cout << &a << &b << endl;
    cout << &c << &d << endl;
    //delete c;
    _CrtDumpMemoryLeaks();
    return 0;
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/872939.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-13
下一篇 2022-05-13

发表评论

登录后才能评论

评论列表(0条)

保存