当前位置:  开发笔记 > 编程语言 > 正文

为什么Delphi的内存管理器会在关机时报告错误的内存泄漏?

如何解决《为什么Delphi的内存管理器会在关机时报告错误的内存泄漏?》经验,为你挑选了1个好方法。

我在关机时收到内存泄漏消息,说我正在泄漏某个对象的3个.但是有两个问题.

    它只是间歇性地发生.我可以运行我的程序,完成相同的一系列步骤,(打开数据文件,显示它,然后再次关闭),有时消息会显示,有时则不会.沿着这些代码路径没有调用random()或其他"非确定性"逻辑.

    代码审查说,报告的内存泄漏是不可能的; 该对象仅在某个类中创建,并且在该类的析构函数中正确释放.(我实例化了父类的三个以上的对象.在清理过程中没有异常.)

将跟踪输出添加到此类的构造函数和析构函数中会显示创建的每个对象都被销毁,即使内存管理器报告也是如此.所以我只能得出结论,这是误报.但是,将"RegisterUnexpectedMemoryLeak(self)"添加到构造函数会使消息消失.

以前有人见过这样的事吗?知道可能导致它的原因吗?我尽可能肯定物体没有泄漏,所以发生了什么呢?



1> gabr..:

使用新的FastMM,在链接器选项中启用映射文件构造,定义条件符号FullDebugMode并重建程序.然后完成你的步骤.在程序终止时,它应该生成文件programname__MemoryManager__EventLog.txt,其中包含有关程序在何处构建泄漏对象的信息.

推荐阅读
郑谊099_448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有