问题标签 [crtdbg.h]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 使用堆调试 MS VC++ 2005
我启用了堆调试来尝试调试一些内存泄漏错误。我通过包括以下内容来做到这一点:
连同_CrtDumpMemoryLeaks()
对感兴趣函数的调用。
然后我还编辑项目属性配置以将调试类型设置为'Native Only'
并添加预处理器定义'_DEBUG'
和 C/C++ 代码生成运行时库/MDd
。我发现无论我把_CrtDumpMemoryLeaks()
函数调用放在哪里,它都会如下转储内存泄漏输出。
这可能意味着什么?这是否意味着如果在调用点有转储输出,那么错误/泄漏实际上发生在此之前?我们可以肯定地得出结论吗?如果没有,它似乎不是一个真正有用的实用程序。任何关于如何正确使用它或关于解释的建议/帮助表示赞赏。谢谢!
c++ - 内存泄漏检测文件错误
我有一个程序应该输出有关其内存泄漏的信息。但是,它不起作用。以下是程序:
我正在构建 DEBUG 版本,因此不应忽略这些功能。我使用的编译器是Visual Studio 2010。该程序只创建一个文件“Memory Leaks.txt”,但文件中没有内容。有什么想法吗?
- 编辑 -
我已经按照建议更新了程序以使用“正确的文件句柄”。该程序仍然没有向文件输出任何内容。
- 编辑 -
问题在于关闭文件。下面的代码现在可以工作了。
c++ - 重置 CRT 调试堆中的高水位计数
_CrtMemState
由返回的结构_CrtMemCheckpoint()
包含一个size_t lHighWaterCount
成员,该成员给出了自应用程序启动以来的最大内存使用量。我正在编写一个关心高水位线的测试台,但它在一次运行中运行多个测试,我只能在第一次测试中可靠地获得高水位线:如果高水位线在第二次测试,我只知道高水位线小于或等于第一次测试。
有没有办法将 CRT 调试堆的高水位标记重置为当前分配大小?
c++ - _CRTDBG_MAP_ALLOC 不显示文件名
我正在尝试检测内存泄漏,并且我正在使用 make _CRTDBG_MAP_ALLOC 宏来定位泄漏区域的位置。所以我定义 MACRO 如下:
在我的代码中,我有:
(感谢 Tushar Jadhav:内存消耗迅速增加,然后非常缓慢地下降;内存泄漏?)
但输出显示如下:
而不是这样的:
那么我怎样才能让它显示泄漏的文件名和位置呢?
c++ - 使用 _CrtDumpMemoryLeaks 的 BOOST_LOG_TRIVIAL 内存泄漏
我正在使用 Visual Studio 2010 和 boost 库。我正在尝试使用在主函数退出后调用的 _CrtDumpMemoryLeaks 来查找内存泄漏。我很确定 boost_log_trivial 不会泄漏内存。如何避免这种误报?
源代码:
输出:
c++ - 在 Visual C++ (Windows) 中检测内存泄漏
我正在 Visual Studio 2010 下开发一个大型 C++ 项目,并认为内部存在一些内存泄漏。我尝试了包含 crtdbg.h 的方法,但它没有多大帮助,因为我看不到泄漏发生在哪里。定义 new 有两个陷阱:首先它需要在每个 cpp 文件中完成,这不是一个真正的选项,第二它与例如 Boost 中断。使用 new(nothrow) 或任何使用 boosts "has_new_operator.h" 的东西都会打破这一点。[编辑:它无法编译,因为重新定义的“new”对于“nothrow”或“boost magic”之类的东西没有重载](除非在所有 boost 标头(包括引用 boost 的标头)之后定义“new”)
最后但同样重要的是:我有单身人士。它们是使用单例模板的子类和静态函数变量来实现的。其中之一是一个配置容器,其中一个注册设置(比存储在映射中的字符串和整数对)由于在解除分配单例实例之前调用了内存泄漏转储,因此所有这些字符串和单例本身。
有什么方法可以只显示真正的泄漏或在静态对象释放后转储?
哪些免费工具可以处理这种情况?
c++ - Visual Studio 内存泄漏检测不打印文件名和行号
我想检查我的程序是否存在内存泄漏,并找到了这篇 Microsoft 文章。
我彻底遵循了这篇文章并添加了
和
当程序退出时。
它会在我的输出窗口中正确转储所有内存泄漏信息,但问题是:
它不会打印内存泄漏所在的文件名和行号!
它在文章中说用#define _CRTDBG_MAP_ALLOC
它打印文件名和行号,但它不适合我。
我的输出看起来像这样
所以我真的不能用那个......按 F4 去排队也不起作用。
请你帮助我好吗?
crtdbg.h - 错误 C1083:无法打开包含文件:'crtdbg.h':没有这样的文件或目录
我正在尝试在 Visual Studio 2013 中编译 cpp 代码。它之前工作正常。但现在我收到以下错误:
错误 1 错误 C1083:无法打开包含文件:'crtdbg.h':没有这样的文件或目录 C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\atlmfc\include\afx.h 250 1 IDEditor
我检查了 crtdbg.h。该文件存在于"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include"
路径中。
看起来它无法包含上述目录。我尝试在属性中添加路径,但仍然遇到同样的问题。
请帮忙
c++ - C1189:#error:错误:使用 C 运行时库内部头文件
我正在尝试使用 VS 2008 Professional 和 windows CE 6.0 SDK 构建代码。
我收到一个错误致命错误 C1083:无法打开包含文件:'crtdbg.h':没有这样的文件或目录。我在 Tools ->options->VC++ Directories->Include 中包含了以下路径
这个文件在我的启动项目中使用。我的解决方案有 10 个项目(MFC 静态库)。10 个中有 9 个编译成功。只是这个项目给出了这个错误。因此,在该项目的其他目录中包含路径 C:\Program Files\Microsoft Visual Studio 9.0\VC\crt\src。现在它给了我这个错误。你能帮我么。
c - 找不到VsCode crtdbg.h,如何解决?
试图检查内存泄漏工具,但 Vscode 无法识别#include <crtdbg.h>
。
这是代码:
编译错误:
如何正确包含 crtdbg.h?
PS:我正在使用 MinGW 编译器,除此之外一切正常。
编辑1:其他帖子的解决方案不起作用。如果我使用建议的代码,则会出现。
编辑 2:有没有人将 VsCode 与 MinGW 一起使用?