天天看點

Delphi Create(nil), Create(self), Create(Application)的差別

Delphi Create(nil), Create(self), Create(Application)的差別

最近的項目中經常在程式中動态建立控件,勢必用到Create。

但是随之而來的問題就是動态建立的控件是否可以正确的釋放記憶體?

以及 Create(nil), Create(self), Create(Application)的差別又是什麼呢?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

Create(

nil

);

//需要自己釋放

Create(Self);

//當Self釋放時自動觸發釋放

Create(Application);

//當Application釋放時自動釋放

Create(

nil

);

//這種方式建立的對象要自己手工進行FREE才會回收記憶體

//其他很多記憶體洩漏就是忘了手工釋放記憶體

Create(Self);

//由self對象負責釋放建立的對象,隻要self沒有釋放掉

//這個對象的記憶體就不會被釋入掉,除程式員手工進行釋放,他會觸發很多事件。

//性能不是很好

Create(Application);

Create(Application

.

owner); 

//這兩就是把self具體對象罷了

Delphi Create(nil), Create(self), Create(Application)的差別