C++ 如何检测内存泄漏';在Linux/MacOs平台上使用什么?

C++ 如何检测内存泄漏';在Linux/MacOs平台上使用什么?,c++,c,xcode,macos,memory-leaks,C++,C,Xcode,Macos,Memory Leaks,我已经准备好了头文件“heap\u monitor.h”。这个头文件的作用是,如果我把它包含在其他头文件中,它会检查我这个头文件和cpp文件中是否有内存泄漏。 当我忘记在析构函数中删除对象时,它们会留在堆中,而这个监视器会向我发送错误,我知道我在堆中没有删除内存的地方 #pragma once #define _CRTDBG_MAP_ALLOC #include <stdlib.h> #include <crtdbg.h> #define new new ( _NORM

我已经准备好了头文件“heap\u 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)
#pragma一次
#定义\u CRTDBG\u映射\u ALLOC
#包括
#包括
#定义新的(正常块、文件、线)
#定义initHeapMonitor()
此版本的代码包括crtdbg.h,它是Windows库。 在Xcode中,我没有编译带有以下错误的代码:

错误:找不到“crtdbg.h”文件

我必须写一些其他的代码来检查内存泄漏,或者修复程序来编译我的工作

当我删除crtdbg.h x代码时,在new.cpp中向我发送20个错误:


知道我如何解决这个问题吗

据我所知,搜索内存泄漏的最佳方法是使用名为Valgrind的工具,只需使用memcheck命令即可。您可以在此处查看详细信息:
对于MaOS,你可以看到线程

< p> Valgrind是发现Mac C++开发内存泄漏的最好方法。您不能在其他操作系统上使用它,句号。您研究过吗?Xcode使用了不同的体系结构,提供了不同于Microsoft的框架。另见。我真的读到了:,我不知道这是怎么工作的,坦率地说,我没有时间研究这样的工具。在xcode中不存在没有错误的其他库吗?还是同样的代码和平?如果不是的话,我可能得学着和瓦尔格林一起工作。好吧,也许我写得不准确。我不必担心内存泄漏,我必须编译我的项目来运行和测试我的工作。我的教授将我完成的代码导入VS,他发现所有内存泄漏。我只想编译我的代码,但我不知道如何:(