0

线程已分配

FreeOnTerminate := true;

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

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

4

2 回答 2

8

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

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

于 2013-07-30T17:12:20.517 回答
6

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

于 2013-07-30T18:18:13.917 回答