读书人

bcb中类的Free()函数与delete有啥区别

发布时间: 2012-02-16 21:30:36 作者: rapoo

bcb中类的Free()函数与delete有啥区别?
在bcb中如果我new出一个vcl的类
例如

TImage* img=new TImage();

那么释放的时候,是用
img->Free()

还是delete img



两者有啥区别?

[解决办法]
free() 是 VCL 对自身对象的释放的方法,也就是释放自己
delete 是 C++ 对对象的释放方法,释放某某对象

就释放本身而言,本质上没啥区别

从代码维护来说,Free 更省事些,但从可读性而言,我更倾向用 delete 来释放对象
毕竟,有 New 还得有个 Delete,而且 Delete 后还可以显示的置对象指针为 NULL,用于在其它方法访问该对象时作一些必要的检测

[解决办法]
我一般这么写的

try
{
TStringList sl=new TStringList();
...
}
__finally
{
delete sl;
sl=NULL;
}
[解决办法]

探讨
malloc和free是库函数 new和delete是运算符,一一对应,new出来的用deleted, new和delete会调用对象的构造函数和析构函数,free不会调用

读书人网 >C++ Builder

热点推荐