在delphi中查找关闭

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

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

任何解释?

解决方法

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

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

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

相关文章

 从网上看到《Delphi API HOOK完全说明》这篇文章,基本上都...
  从网上看到《Delphi API HOOK完全说明》这篇文章,基本上...
ffmpeg 是一套强大的开源的多媒体库 一般都是用 c/c+&#x...
32位CPU所含有的寄存器有:4个数据寄存器(EAX、EBX、ECX和ED...
1 mov dst, src dst是目的操作数,src是源操作数,指令实现的...