关于全局堆对象

bluejugar 2005-12-19 11:50:51
这个提法好像有个问题.

撇开这个提法存在的合法性,对于你new的一个全局对象,如何释放其占用的内在?
如果不释放它,会有内在泄露吗?
如你在全局int GLOGAL_INT = new int(2008);
...全文
234 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
yhbttfile 2005-12-20
  • 打赏
  • 举报
回复
理论上应该明确调用delete。
但是,如果仅仅是一个POD类型或者简单的结果或者类类型,不释放也没什么问题。
如果是一些资源,如:文件句柄、进程句柄、端口等对象,责绝对不要忘记释放。全局对象建议也使用auto_ptr管理起来,以防止忘记delete操作得调用。
晨星 2005-12-20
  • 打赏
  • 举报
回复
对于一个堆里动态创建的对象来说,通常是不是全局不是很重要。只要你拥有指向它的指针,你愿意啥时候释放就啥时候释放,如果你觉得它在中途就可以下岗了,就在中途释放;否则的话,可以在main函数的最后一句释放它。
如果main函数有局部对象需要用到这个全局对象,那可能需要注意一点,但你可以把所有的局部对象的作用域都限制在main内部的一对大括号中就没问题了,仍然可以在最后一句释放它。
更好的办法是写一个辅助类,它不作别的事,只是拥有一个构造函数:其中申请这个全局对象,还拥有一个析构函数,其中释放这个全局对象。然后你只需要在定义指向那个全局对象的指针之后,再定义这个类的一个全局对象就可以了。
fiftymetre 2005-12-20
  • 打赏
  • 举报
回复
全局堆对象在堆区,不释放当然会泄露了
sinall 2005-12-20
  • 打赏
  • 举报
回复
和是否全局没有关系。
应该和“堆对象生存期”有关系。
只要它还在,你就可以释放。

是否造成内存泄漏,yhbttfile(小兵)说得很不错!^_^
piaochen_2002 2005-12-20
  • 打赏
  • 举报
回复
delete
sankt 2005-12-20
  • 打赏
  • 举报
回复
晨星大哥的正解
晨星 2005-12-20
  • 打赏
  • 举报
回复
偶明白楼上说的“理论上应该明确调用delete”,但偶更倾向于说:“理论上可以不释放,实际上还是释放了好。”:P

65,186

社区成员

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

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