如何在 Linux/MacOs 平台中检测到内存泄漏?

How can I detected memory leak's in Linux/MacOs platform?

本文关键字:检测 内存 泄漏 平台 Linux MacOs      更新时间:2023-10-16

我准备了头文件"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