加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-15 09:26:36 所属栏目:大数据 来源:网络整理
导读:我在关机时收到内存泄漏消息,说我正在泄漏某个对象的3个.但是有两个问题. 它只是间歇性地发生.我可以运行我的程序,完成相同的一系列步骤,(打开数据文件,显示它,然后再次关闭),有时消息会显示,有时则不会.沿着这些代码路径没有调用random()或其他“非确定性”
我在关机时收到内存泄漏消息,说我正在泄漏某个对象的3个.但是有两个问题.

>它只是间歇性地发生.我可以运行我的程序,完成相同的一系列步骤,(打开数据文件,显示它,然后再次关闭),有时消息会显示,有时则不会.沿着这些代码路径没有调用random()或其他“非确定性”逻辑.
>代码审查说,报告的内存泄漏是不可能的;该对象仅在某个类中创建,并且在该类的析构函数中正确释放. (我实例化了父类的三个以上的对象.在清理过程中没有异常.)

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

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

解决方法

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读