如何在 Linux/MacOs 平台中检测到内存泄漏?
How can I detected memory leak's in Linux/MacOs platform?
我准备了头文件"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 ++开发内存泄漏的最佳方法。
相关文章:
- 如何检测内存分配/空闲错误的对象?
- 编译器如何检测内存损坏
- 地址清理器无法使用选项 -O 检测内存泄漏
- 为引用计数的智能指针检测内存泄漏的设计模式
- 在 Windows 上的分配开始失败之前检测内存不足
- 如何在tbbmalloc中检测内存泄漏
- 检测"内存泄漏"时,瓦尔格林德的真实指针是什么?
- 使用 Valgrind 检测内存泄漏的抑制"dl-hack3-cond-1"
- 通过重载新运算符检测内存泄漏
- Visual Studio 2008,检测内存泄漏,符号"__FILE__"未定义
- 如何从被调用方的角度检测内存是动态的还是静态的
- 使用谷歌测试框架(不是窗口)检测内存泄漏的标准做法是什么?
- 如何在使用JNI的C++/Java项目中使用CRT中的工具检测内存泄漏
- 如何以可移植的方式在C++中自动检测内存泄漏
- 用于检测内存泄漏的应用程序
- 在对象的d-tor期间检测内存泄漏
- 如何检测内存泄漏在我的Qt软件的Valgrind或其他工具
- 获取在堆上分配的块数量,以检测内存泄漏
- CppCheck不检测内存泄漏
- Valgrind检测内存泄漏