WinCE C/C++ 运行时库下如何检测泄漏?
Posted
技术标签:
【中文标题】WinCE C/C++ 运行时库下如何检测泄漏?【英文标题】:How to detect leaks under WinCE C/C+ runtime library? 【发布时间】:2008-12-23 01:41:31 【问题描述】:我知道使用 crtdbg.h 标头对 Win32 进行基本泄漏检测的可能性,但是 CE CRT 库标头中不提供此标头(我使用的是最新的 SDK v6.1) .
任何人都知道如何使用 VC 9.0 自动检测 WinCE/ARMV4I 配置中的泄漏?我不想为我的类层次结构覆盖 new/delete,我更喜欢准备好使用和测试过的代码。
【问题讨论】:
【参考方案1】:在工作中(开发基于 WindowsCE 的操作系统 + 应用程序),我们创建了自己的内存管理器,大致基于 Fluid Studios Memory Manager(我使用 SO 找到的链接!)。我很确定通过一些简单的修改,您可以将其调整为在您的平台上使用。
基本上它不会覆盖 new 和 delete,而是使用预处理器向它添加额外的报告。然后,一旦程序退出,它就会生成一个内存泄漏的输出文件。
【讨论】:
我正在为我的 WinCE 开发人员使用 Fluid Memory Manager。非常感谢,这就是我要找的检漏仪!!! 这对我来说无法编译(找不到unlink
或_unlink
或_wunlink
,即使包括wchar.h
和io.h
(不存在))跨度>
您是否定义了所有必要的预处理器常量?您是否链接到正确的库?听起来你可能没有正确设置项目。【参考方案2】:
您想使用AppVerifier 或Entrek CodeSnitch。我在短时间内让 CodeSnitch 工作的运气要好得多。需要注意的是我没有做很多WinMo - 主要是香草CE。我相信 CodeSnitch 和更新的 WinMo 设备(Platman 与 Corecon)存在连接问题,但我也相信 Entrek 要么有一个测试版,要么有一个适用于它的补丁。我的建议是给 Entrek 打电话(不要发邮件,他们很忙,所以打电话是您获取信息的最快途径),只有当您发现它不起作用时,才可以查看 AppVerifier。
【讨论】:
CodeSnitch 不是免费的 :( 并且 AppVerifier 不适用于 Windows Mobile(我没有提到 CE 的移动版本)。无论如何,为您的回复投 1 票,谢谢!:)跨度> 也许我应该编写自己的检漏仪重载新/删除,我现在需要一些非常基本的东西..... 你没有说你追求免费,我可以说 CodeSnitch 的价格在你第一次使用它时就得到了回报。一个可以节省数周寻找深奥内存错误的工具非常非常值得。【参考方案3】:我认为有一个 SourceForge 项目可以解决这个问题:
http://sourceforge.net/projects/crtdbg4wince/
如果我理解你的问题,它就是你正在寻找的
【讨论】:
以上是关于WinCE C/C++ 运行时库下如何检测泄漏?的主要内容,如果未能解决你的问题,请参考以下文章
Visual Studio 2015:在没有运行时库的情况下编译 C/C++