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具體對象罷了
|