函数的 result 为 TBitmap (或其他类似)类型时应该注意一些什么问题?

searoom 2002-08-28 09:46:27
我一般都是在函数中这样写的

result:=TBitmap.Create;

然后对result进行操作,(和变量一样)

但最后我并没有执行 result.free,因此我担心这样是否会造成内存的泄漏?
...全文
72 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
耙子 2002-09-08
  • 打赏
  • 举报
回复
楼上说的美这么个语法吧?

一般来说,函数内部动态申请的东西,函数结束的时候要自己写代码释放掉,这样才能避免内存泄漏。

类似楼主的程序应该调用函数之前先申请了
函数声明成这样,
名字(var TBitmap: bmp);

调用的代码
bmp:=TBitmap.Create;
函数名字(bmp);
bmp.Free;

这样做到了有效控制bmp的生命周期



searoom 2002-09-08
  • 打赏
  • 举报
回复
函数名.free ??

这样也可以用的?
zhuoyuesky 2002-08-28
  • 打赏
  • 举报
回复
楼上说得没错。
或者你声明为变参
eulb 2002-08-28
  • 打赏
  • 举报
回复
内存的泄漏是肯定的了
create后是肯定要free的

你可以这样
先什么一个相同类型的中间类
var
t:tbitmap;
t:=t.create;
...

最后
result:=t;

然后在函数体外free
函数名.free;

5,939

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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