微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在delphi中查找关闭

我亲眼目睹了一个Delphi 6程序,该程序在函数内部使用SysUtils中的FindFirst().这是一个运行数月并执行此操作数百次的程序.令人惊讶的是,没有调用FindClose()并且没有任何不好的事情发生.

如果我理解正确,该程序似乎泄漏文件句柄. (在TSearchRec记录中有一个THandle条目.整个记录被丢弃,THandle没有关闭).事情是似乎没有问题.我使用了sysinternal的进程资源管理器,并且没有看到FindFirst找到的文件的打开文件句柄.

任何解释?

解决方法

如上所述,您的程序泄漏句柄.如果在没有随后调用FindClose的情况下调用FindFirst,则会泄漏句柄.做到这一点,程序将耗尽可用的句柄对象并失败.

你没有看到这表明你还没有达到极限.您没有观察到Process Explorer的泄漏,这表明您没有查看正确的信息.或者您可能完全错误地诊断了问题,并且未调用泄漏的代码,或者调用了FindClose,但您还没有找到它.

您应该修复代码,而不是花费更多时间来分析它.最重要的是,除非您通过调用FindClose来匹配对FindFirst的调用,否则您的程序会泄漏.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐