- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
在多年使用 Visual Studio 中的 Microsoft MSVC 编译器开发通用 C++ 库之后,我们现在将其移植到 Linux/Mac OS X(为我们祈祷)。我已经习惯并且非常喜欢 MSVC 中简单的内存泄漏检测机制:
#ifdef DEBUG
#define _CRTDBG_MAP_ALLOC
#define NEW new( _NORMAL_BLOCK, __FILE__, __LINE__)
#include <stdlib.h>
#include <crtdbg.h>
#else
#define NEW new
#endif
每个内存分配都是使用这个 NEW 宏完成的。每当使用我们库的进程终止时,控制台上都会报告任何内存泄漏(尚未解除分配的 block )以及最初分配内存的文件和行#。
我喜欢的部分是我不必主动“使用性能工具运行”或以其他方式表明我正在寻找泄漏。在常规开发过程中,每次进程终止时都会向我报告泄漏。
现在我们正在转向 GCC 世界,我发现内存泄漏检测工具(其中许多非常复杂)要求我明确指出我处于泄漏搜寻模式。我的 IDE 是 Xcode,我研究了一些分配/泄漏检测工具(如 Instruments 和 MallocDebug),但我承认我还没有花时间完全了解它们。我一直因为我必须提前指定我正在寻找泄漏而不是自动收到警报这一事实而感到厌烦。
我使用的是 Xcode 3.2,听说现在与静态分析工具进行了很好的集成,但我还是没有对此进行研究。我正在寻找一些关于我的选择的想法。 GCC 和/或 Xcode 中是否有类似的机制?是否有一个简单的第三方库或工具可以执行我所知道和喜爱的非常基本的功能?还是我应该接受它并学习新的做事方式?
最佳答案
您有多种选择。
首先,也是最常见的,您可以在 Valgrind 等工具下运行您的应用程序。 .这应该指出一些内存滥用,例如 NULL 指针读取和写入以及内存泄漏。 Valgrind 套件中有许多可用的工具,因此请务必查看它们。
其次,您始终可以使用使用 LD_PRELOAD 的库。诡计。基本上,LD_PRELOAD 技巧允许 DLL 注入(inject),这意味着可以创建工具来帮助跟踪应用程序中的内存使用情况,而无需更改任何内容。您会发现 dmalloc 等工具和 efence在他们提供的调试工具中相当广泛。
最后,最近的 GCC 版本包括一个名为 Mudflap 的工具。 .这基本上使用函数检测来包装与 dmalloc、efence 和 Valgrind 相同的内存函数的调用。该程序会明显变慢,并且可以在运行时进行调整,尽管它看起来仍然很有潜力。
我已经使用了所有这三个,发现 Valgrind 非常有用。我也一直对使用 Mudflap 非常感兴趣,虽然我还不能。
关于c++ - GCC内存泄漏检测相当于微软crtdbg.h?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1761125/
刚刚买了一辆装有 Microsoft 同步系统的汽车。在网上进行了快速搜索,很好奇是否有人知道可能存在的任何 SDK、示例开源附加应用程序等。 提前致谢。 最佳答案 更新: 看起来像Ford has
我使用VS2010,目标为.Net 2.0(VB.Net Windows Form应用程序) How to decide what is the .Net target我决定使用 2.0,因为我知道如
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: Reading/Writing MS Word files in Python 我正在研究需求管理系统(如
Visual Studio 的价格非常昂贵。这就是为什么我想知道我可以使用什么来免费开发 ASP.NET 和 Silverlight 应用程序。如果我使用express工具,我可以开发商业应用吗?使用
是否可以设置特定单词或短语的语气或重点? 例如:Good Morning会用轻松的语气,而 The nuclear plant is about to melt down会更加紧迫。 我知道我可以改变
我注意到这个问题重复了几次,但是,从所有资源来看,我仍然无法使其正常工作。 我只是尝试在我的 Django 应用程序中使用 Azure Active Directory 身份验证。我正在使用this模
就目前情况而言,这个问题不太适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、民意调查或扩展讨论。如果您觉得这个问题可以改进并可能重新开放,visit
我在使用 UseJwtBearerAuthentication 方法时遇到困难,我正在使用 Microsoft Azure ACS 获取 token (使用服务标识)。 JWT token 很好地返回
所以我找到了list今天 MSDN 上有很多转换器,现在我想使用其中的一些。然而,经过一番搜索后,我似乎找不到任何关于它们的信息。 我主要想用IntToBoolConverter 。但是我不知道如何使
我在使用 UseJwtBearerAuthentication 方法时遇到困难,我正在使用 Microsoft Azure ACS 获取 token (使用服务标识)。 JWT token 很好地返回
关闭。这个问题需要更多focused .它目前不接受答案。 想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post . 2年前关闭。 Improve this questi
有没有办法摆脱子表单中的左侧栏和底栏? 我指的是这张图片中的酒吧。 我有被引用为连续形式的形式,如果这很重要。我想做的是让它看起来有点像这个用户所做的 Trying to Make an Effici
例如,我有一个任务表: TaskTitle DueDate Person Manager Report 3/28/15 John Dave Inspection 4/10/15 Bri
我得到的错误在这里: #if defined( _WIN32 ) #ifndef WIN32 #error error // error calls here #end
我想知道 MS Jscript(不是 Jscript .net)是否有类似于 python 中的电子邮件模块? 最佳答案 您可以使用Collaboration Data Objects (CDO) C
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
为什么我收到以下代码的以下警告:) 代码: _stprintf(m_szFileNamePath,_T("%s"),strFileName); warning C4996: '_swprintf':
我一直在阅读他们现在已经放弃了他们的 HPC 项目并转向 Hadoop。他们将提供自己的 hadoop 安装包,可能会更无缝地与 .NET 集成。 我在哪里可以获得有关此计划的文档?架构以及如何开始在
文件表: Company Document Status Notes: A 1 Submission Submitte
我不太了解 VB。我能弄清楚大部分事情。想知道有没有人能告诉我这行代码是什么意思 Option Compare Database 最佳答案 意思是“在这个模块中,使用数据库中定义的规则比较字符串。”
我是一名优秀的程序员,十分优秀!