【问题标题】:C++ memory leak with managed C++ using CRT library - _CrtDumpMemoryLeaks() issues使用 CRT 库的托管 C++ 的 C++ 内存泄漏 - _CrtDumpMemoryLeaks() 问题
【发布时间】:2017-03-15 15:51:11
【问题描述】:

我尝试使用 MSDN CRT 库获取程序内存泄漏,但在启动 _CrtDumpMemoryLeaks() 时遇到异常问题,因为它永远不会结束线程的执行。

结构: 启动一个 DLL 包装类的 nUnit 测试,它只调用 _CrtDumpMemoryLeaks()...调试器运行一段时间(进程活动)然后挂起但不会停止 - 没有更多活动。

如 MSDN 文档中所述,新、malloc、calloc、realloc 和 free 函数已被覆盖。

我错过了什么?

我的背景: Visual Studio 2012 Update 5、托管 C++ (C++/CLI)、单元测试 C# (nUnit)

【问题讨论】:

  • 向我们展示codez。 How to Ask
  • 可能您遇到了严重的内存损坏情况...尝试在程序开始时和程序的各个时刻执行它。很明显,您会看到许多泄漏(因为仍有许多对象被引用),但至少您将能够查明损坏
  • 按照您的建议更正。好的。我完成了转储......但这里是代码: char * memLeak = (char *) malloc(64); memset(memLeak,0,64); _CrtDumpMemoryLeaks();我没有内存泄漏!正常吗?

标签: c# c++ memory-leaks


【解决方案1】:

这是第一行的一部分

char * memLeak = (char *) malloc(64);
memset(memLeak,0,64);
_CrtDumpMemoryLeaks();

在 xanatos 的帮助下,_CrtDumpMemoryLeaks() 终于运行了……

但什么也不返回! 我注意将 memLeak 变量显示为内存泄漏。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-13
    • 1970-01-01
    • 2011-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-10
    • 1970-01-01
    相关资源
    最近更新 更多