首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

bcb中类的Free()函数与delete有啥区别?解决方案

2012-02-16 
bcb中类的Free()函数与delete有啥区别?在bcb中如果我new出一个vcl的类例如TImage* imgnew TImage()那么

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不会调用

热点排行