我准备了头文件"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.hx代码时,在new.cpp:https://prnt.sc/iv1x7d中向我发送20个错误
我是怎么解决这个问题的?
发布于 2018-03-22 23:17:29
据我所知,搜索内存泄漏的最佳方法是使用一个名为Val差尔的工具,只需使用memcheck命令即可。您可以在这里看到详细信息:http://valgrind.org/docs/manual/mc-manual.html for macOS,您可以看到线程Valgrind on macOS Sierra
https://stackoverflow.com/questions/49439528
复制相似问题