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

coolspac 2011-10-10 11:25:07
在bcb中如果我new出一个vcl的类
例如

TImage* img=new TImage();

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

还是delete img



两者有啥区别?
...全文
246 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
lhy 2011-10-11
  • 打赏
  • 举报
回复
我觉得Free更安全一些。
缘中人 2011-10-11
  • 打赏
  • 举报
回复
delete 放心
asong200 2011-10-11
  • 打赏
  • 举报
回复
用new时,一般用delete来删除。
coolspac 2011-10-11
  • 打赏
  • 举报
回复
多谢以上各位,也就是说本质上来说delete和free()达到的效果一样,差别只在可读性?
纯冰糖 2011-10-11
  • 打赏
  • 举报
回复
我一般这么写的

try
{
TStringList sl=new TStringList();
...
}
__finally
{
delete sl;
sl=NULL;
}
wangcftxz 2011-10-11
  • 打赏
  • 举报
回复
free() 是 VCL 对自身对象的释放的方法,也就是释放自己
delete 是 C++ 对对象的释放方法,释放某某对象

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

从代码维护来说,Free 更省事些,但从可读性而言,我更倾向用 delete 来释放对象
毕竟,有 New 还得有个 Delete,而且 Delete 后还可以显示的置对象指针为 NULL,用于在其它方法访问该对象时作一些必要的检测
纯冰糖 2011-10-11
  • 打赏
  • 举报
回复
Free应该是适应Pascal的VCL的方法
纯冰糖 2011-10-11
  • 打赏
  • 举报
回复
使用new时,我一般都使用delete释放
ccrun.com 2011-10-11
  • 打赏
  • 举报
回复
3楼回答的很好,8楼不了解VCL。
lhy 2011-10-11
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 maliang799 的回复:]
malloc和free是库函数 new和delete是运算符,一一对应,new出来的用deleted, new和delete会调用对象的构造函数和析构函数,free不会调用
[/Quote]
你不是C++ Builder程序员,楼主说的Free是TObject的方法。
茹果伱在 2011-10-11
  • 打赏
  • 举报
回复
malloc和free是库函数 new和delete是运算符,一一对应,new出来的用deleted, new和delete会调用对象的构造函数和析构函数,free不会调用

13,873

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧