我准备了头文件"heap_monitor.h"。这个头工作,如果我把它包含在其他一些头文件中,它会检查我这个头和 cpp 文件中的任何内存泄漏。当我忘记删除析构函数中的对象时,它们会留在堆中,并且此监视器向我发送错误,我知道我不会在堆中耗尽内存。
#pragma once
#define _CRTDBG_MAP_ALLOC
#include <stdlib.h>
#include <crtdbg.h>
#define new new ( _NORMAL_BLOCK , __FILE__ , __LINE__ )
#define initHeapMonitor() _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF)
此版本的代码包括 crtdbg.h,它是 Windows 库。在Xcode中,我不会用此错误编译代码:
错误:">crtdbg.h"文件未找到
我必须编写一些其他代码来检查此内存泄漏或修复程序以编译我的工作。
当我删除crtdbg.h x代码时,在new中向我发送20个错误.cpp:https://prnt.sc/iv1x7d
知道某人我如何解决这个问题?
据我所知,搜索内存泄漏的最佳方法是使用名为 Valgrind 的工具,只需使用 memcheck 命令即可。 您可以在此处查看详细信息:http://valgrind.org/docs/manual/mc-manual.html对于macOS,您可以在macOS Sierra
http://valgrind.org/downloads/current.html Valgrind是查找mac c ++开发内存泄漏的最佳方法。