对于这个问题,C++和PASCAL的风格不太一样.
C++认为,只有在对象的作用域结束时由析构函
数释放所有资源,或者由程序员显式调用delete
删除由new生成的对象才是合法的.
PASCAL认为,对象在任何时候都可以释放.对
PASCAL来说,所有对象都相当于C++的用new
生成的对象.
由于VCL是PASCAL编写的,所以应该遵循PASCAL
的风格.也就是说,在能够保证没有别的对象会
删除本对象的情况下,可以调用Free.
这就涉及到别的对象与自己的关系问题.对VCL来
说,某个对象都有一个数组保存了自己拥有的对象,
在自己结束时将一并删除.而每个对象又有个Parent
指针,当自己释放时,会从Parent的数组中将自己清
除.所以,一般来说,不会方式冲突.当然,某些时候
由于其它的原因,这个原则不是被完全遵守的.这些
特殊情况下就不能这样考虑了.