create后一定要free吗? 简单举例 procedure a; var x:TX; begin x:=TX.create; //do someting; x.free //如果我这里不free,到了这个end不就是相当于C中的}自动释放吗? 也就是说在此处这个free是多余的。对吗? end; 但是为了可靠性和可读性,这个Free最好不要省。 而且还要用try...finally...end装起来。 这样即使你在过程中出现异常,也能保证资源能够释放。 像你这样,一定要FREE,否则就会有Memory Leak。 但是如果形如x := TX.Create(Application)这样,可以不Free,那么在Application被Free时,Application会替你free的 1.Create参数为:nil/self/application的区别,最好能看到实际效果的区别 例如: My := TMy.Create(X); 其中的 X 将会成为控件 My 的 Owner 属性, 可能会不只一个控件把 X 当作 Owner. 当 X 释放时, 它会同时释放那些把它当作 Owner 的所有控件. 譬如: btn1 := TButton.Create(Panel1); btn2 := TButton.Create(Panel1); btn3 :=