在Delphi线程中,何时释放内存?

时间:2013-07-30 17:09:14

标签: multithreading delphi delphi-7

线程已分配

FreeOnTerminate := true;

我知道它的内存会在终止时被释放,但终止事件什么时候会发生?

或者,以更通用的方式,何时释放与某个线程相关的内存?

2 个答案:

答案 0 :(得分:8)

释放线程时释放线程本身的内存(IOW,当它的析构函数退出时)。 FreeOnTerminate只是意味着当线程终止时(Execute方法退出),析构函数将自动被调用。

线程为其自己使用分配的任何内存都应该由其析构函数中的线程释放。

答案 1 :(得分:6)

FreeOnTerminate为真时,TThread在调用TThread.DoTerminate()之后释放自己的内存(在自身上调用自己的析构函数),在TThread.Execute()被调用之后并退出。所以基本上,一旦DoTerminate()被调用(内部触发TThread.OnTerminate事件,如果已分配)并退出,假设TThread对象不再有效,如果FreeOnTerminate为真