gpt4 book ai didi

delphi - 在单元从内存(终结部分)卸载之前不释放对象是否可以?

转载 作者:行者123 更新时间:2023-12-03 18:01:34 24 4
gpt4 key购买 nike

既然进程会被操作系统杀死,所有分配的内存都会被回收,那么在单元终结部分不释放对象/资源可以吗?

例如,

unit Threading;

interface

implementation

var threadpool: ThreadPool;

initialization

threadpool := ThreadPool.Create;

finalization

threadpool.Free; // is it OK to remove this?

end.

最佳答案

Since the process will be killed by OS and all memory allocated will be recycled anyway, is it OK not to free objects/resources in the unit finalization section?

是的,可能是。进程终止时系统会清理资源。

但是,有几个条件:

  1. 大多数泄漏检测工具会检查所有动态分配的内存在您的进程将控制权返回给系统之前是否已被您的进程销毁。你打算做的事情使这些工具变得无能为力。
  2. 如果您的代码曾经构建到动态库中,例如 DLL 或程序包,则可以卸载该库,而主机进程会继续存在。这是一个泄漏,会影响宿主进程的生存能力。
  3. 有些对象需要最终确定,有时会有顺序限制。在不了解您的类(class)的情况下,我们无法做出判断。

关于delphi - 在单元从内存(终结部分)卸载之前不释放对象是否可以?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33147671/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com