【发布时间】:2015-04-16 15:51:32
【问题描述】:
我有一个用 VC++ Windows 窗体应用程序编写的应用程序,它与各种硬件(如 A/D 卡、GPIB、D/A 等)交互。我的客户在现场运行了该应用程序,发现应用程序在运行几次后就崩溃了秒。我让他通过任务管理器监控内存增长,我发现确实,内存在增长。所以看起来像是内存泄漏的一些问题。现在我想找到我的代码中的确切位置,我没有正确释放/分配内存。但我无权访问现场 PC。我必须在没有那些硬件 A/D 等的 PC 上执行此操作。是否有任何软件可以接受我的 exe,并指出导致问题的函数/代码行的名称,而不实际执行我的 exe ? 我的 exe 无法运行,因为我没有这些硬件。
【问题讨论】:
-
您可以使用像 Dr. Memory (drmemory.org) 这样的内存分析工具 - 确保您的应用程序是使用调试符号编译的 32 位。见这里:drmemory.org/docs/page_prep.html
-
在 S.O. 上请求软件/工具/库推荐是题外话。也就是说,我能想到的最好方法是找到一些静态分析工具,例如CppCheck,如果他们发现了这个错误,你会很幸运。您可能会尝试通过使用 RAII 来消除大多数
new和delete的使用,例如std::string、std::vector、智能指针......当然,您可以提供工具或构建供客户端在现场运行,但我假设您正在努力避免进一步给它们带来不便。
标签: c++ windows visual-studio-2010 memory memory-management