求助一下,怎样在return 之后 delete...

iwantscore2010 2011-05-03 07:08:14
我的问题是这样的:

Bitmap CreateImage()
{

Bitmap *gdiBMP = Bitmap::FromFile......

return gdiBMP;
delete gdiBMP;
}

请问要怎么完成return之后,完成delete?
...全文
374 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
ljt3969636 2011-05-03
  • 打赏
  • 举报
回复
话说该说的laodeng都说了,我下面这个东西纯属tuokuzifangpi....硬找出来的办法
定义函数: int on_exit(void (*function)(int, void*), void *arg);
函数说明:
on_exit()用来设置一个程序正常结束前调用的函数。当程序通过调用exit()或从main中返回时,参数function所指定的函数会先被调用,然后才真正由exit()结束程序。参数arg指针会传给参数function函数。
返回值:
gangyilovevc 2011-05-03
  • 打赏
  • 举报
回复
我猜测他的意思是,想先使用Bitmap,然后在删除。
alweeq86 2011-05-03
  • 打赏
  • 举报
回复
Bitmap CreateImage()
再定义个
Bitmap DestoryImage(){delete gdiBMP; } 就当他是析构函数
CreateImage()创建后不用了就DestoryImage()
老邓 2011-05-03
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 loaden 的回复:]

方案二:智能指针
std::auto_ptr<Bitmap> CreateImage()
....
[/Quote]
这里,auto_ptr不合适,用std::shared_ptr吧。
kobe198702 2011-05-03
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 loaden 的回复:]

方案二:智能指针
std::auto_ptr<Bitmap> CreateImage()
....
[/Quote]

++ 学习了
辰岡墨竹 2011-05-03
  • 打赏
  • 举报
回复
同学,你开玩笑吧,你return以后函数就不会再继续执行了,直接跳回原来的地方执行了,你的那个函数就和它一点关系也没有了,你也无法控制何时去delete那个对象了,要想删除,应该让调用者去删除。或者把Bitmap作为全局变量或者由函数参数传入一个对象,你来填充它(比如BitBlt、memcpy),创建删除什么的都由调用者来管理。
s_hhm 2011-05-03
  • 打赏
  • 举报
回复
上面二楼的方法都可以.
在return后,函数就在这里退出了,后面的任何语句都将无法被执行!
老邓 2011-05-03
  • 打赏
  • 举报
回复
方案二:智能指针
std::auto_ptr<Bitmap> CreateImage()
....

老邓 2011-05-03
  • 打赏
  • 举报
回复
方案一:
Bitmap gdiBMP = CreateImage();
......
delete gdiBMP;

把返回值保存起来,使用完后再delete

64,646

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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