关于程序优雅退出的定义

Putin_yhc 2011-04-08 10:03:33
请教各位:
本人在编写程序的时候,习惯在析构函数中删除或关闭掉所有申请过的资源,认为这样做是一种优雅退出。
最近看了一位高手写的代码,程序在退出的时候直接return 0,大多数资源不释放,因为操作系统会为进程释放。这一做法颠覆了本人原来的想法,请教各位高手关于优雅退出的定义。
...全文
348 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
JasonYak 2011-04-08
  • 打赏
  • 举报
回复
赞同lz的做法
lvv.me 2011-04-08
  • 打赏
  • 举报
回复
有些资源提前释放会出错.
这个是资源同步的问题.
这种情况只能让系统自己处理了.
不能一棍打死.
赵4老师 2011-04-08
  • 打赏
  • 举报
回复
检查是否内存泄漏的办法之一:
任务管理器 进程 查看 选择列 内存使用
任务管理器 进程 查看 选择列 虚拟内存大小
让你的程序(进程)不退出,循环执行主流程很多遍,越多越好,比如1000000次甚至无限循环,记录以上两个数值,再隔至少一小时,越长越好,比如一个月,再记录以上两个数值。如果以上两组数值的差较大或随时间流逝不断增加,则铁定有内存泄漏!
赵4老师 2011-04-08
  • 打赏
  • 举报
回复
与其费神搞什么优雅的退出不如无论上次怎么意外退出留下多烂的摊子,下次重启时都能收拾好烂摊子开始工作。
因为意外退出是无法避免的。(比如CPU风扇不转了、电脑被砸了、电池没电或机房掉电、地震、海啸、核污染、地球毁灭……(^_^))
quwei197874 2011-04-08
  • 打赏
  • 举报
回复
楼主说的高手 return 0是释放进程,线程的安全方法,但不会new了不delete吧,怀疑楼主没看仔细.
pathuang68 2011-04-08
  • 打赏
  • 举报
回复
楼主的做法是对的。如果new/malloc了,没有delete/free,那就错了。在优雅之前,首先要正确才行!
辰岡墨竹 2011-04-08
  • 打赏
  • 举报
回复
系统的确是会释放资源,但是那是要等到程序退出以后。如果你的程序要运行几个小时甚至几天都不退出怎么办?运行时内存泄漏导致系统资源不足怎么办?
退出优雅了,并不代表程序能够不多占内存。
jackzhhuang 2011-04-08
  • 打赏
  • 举报
回复
是哪位高手啊?NND,最讨厌就是一些人写了多年的垃圾代码然后就被别人称作高手了。

垃圾代码写100年也是垃圾代码,写垃圾代码的人就是菜鸟!
direction917 2011-04-08
  • 打赏
  • 举报
回复
顶LZ,我的程序一般情况下,不释放资源都跑不起来(就别提系统为我清理资源了),感觉还是要养成好的习惯。
luciferisnotsatan 2011-04-08
  • 打赏
  • 举报
回复
你是只那高手 new,open后都没delete,close?
系统是会释放资源,但个人还是倾向于自己释放。至少查内存泄漏时,不会报出一堆问题。
RabbitLBJ 2011-04-08
  • 打赏
  • 举报
回复
个人感觉楼主是对的,你说的高人的做法只在特定的操作系统有用,万一在一个系统不释放资源的操作系统上,那样就悲剧 了
走走刀口 2011-04-08
  • 打赏
  • 举报
回复
WINDOWS的一般都会自动释放资源,只要关了程序都会释放,但最好要保持优良的作风,自己的事自己处理吧.
chengzhe 2011-04-08
  • 打赏
  • 举报
回复
程序退出后的确会释放资源 但是绝大多数程序是守护进程 不会被释放资源的的
Meteor_Code 2011-04-08
  • 打赏
  • 举报
回复
你所谓的高手写的是测试程序吧
商业软件他敢这么写????
binggou8993 2011-04-08
  • 打赏
  • 举报
回复
我个人认为优雅的推出从本质上讲并没有什么特殊的定义,一般意义上讲只要不会引起系统资源浪费、崩溃等异常现象的退出 都应该很优雅,不要关资源是由系统还是由程序本身收回

如C++中new出来了一块内存,一定要有一个delete与之对应
但在C#中new出来的对象,就不需要由程序员进行显示收回

总之一句话:不造成异常问题出现的退出就是优雅的
星爷是我哥 2011-04-08
  • 打赏
  • 举报
回复
你还没高手的水平就不要用高手的方法,很多方法是那些牛人已经知道底层原理。就直接退。
但我们还是用标准的做法比较好,代码一个人写一个人看。怎么都行,只要能编译过,要是写了别人也要看。
就写得规范点。方便别人。
zhangquangood 2011-04-08
  • 打赏
  • 举报
回复
这个问题,还是要对系统 了解的比较多,才能下定义

64,637

社区成员

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

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