社区
C++ 语言
帖子详情
关于全局堆对象
bluejugar
2005-12-19 11:50:51
这个提法好像有个问题.
撇开这个提法存在的合法性,对于你new的一个全局对象,如何释放其占用的内在?
如果不释放它,会有内在泄露吗?
如你在全局int GLOGAL_INT = new int(2008);
...全文
234
7
打赏
收藏
关于全局堆对象
这个提法好像有个问题. 撇开这个提法存在的合法性,对于你new的一个全局对象,如何释放其占用的内在? 如果不释放它,会有内在泄露吗? 如你在全局int GLOGAL_INT = new int(2008);
复制链接
扫一扫
分享
转发到动态
举报
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
C++---
全局
对象
、局部
对象
、静态
对象
静态
全局
对象
和一般的
全局
对象
的区别就是一般的
全局
对象
在程序的其他文件中可以通过关键字extern来调用,而static声明的
全局
变量则只能在本文件中使用,这是链接性一个是外部的,一个是内部的!3、静态(static)
对象
,当
对象
生成时其构造函数被执行;4、以new方式产生出来的局部
对象
,当
对象
生成时其构造函数被执行,析构函数则在
对象
被delete时执行时执行。1、
全局
对象
,程序一开始,其构造函数就先被执行(比程序进入点更早);2、局部
对象
,当
对象
生成时,其构造函数被执行;第三种方法是产生一个
全局
对象
。...
关于执行环境(上下文)、
全局
变量
对象
VO、活动
对象
AO、
全局
对象
GO
全局
执行上下文/函数执行上下文(局部) 先来总结下名词: VO:
全局
变量
对象
AO:活动
对象
(也叫函数的变量
对象
) GO:
全局
对象
(window) EC:执行环境 ECStack:执行环境栈(调用栈) 环境=上下文 每个执行环境有自己对应的变量
对象
,函数执行环境是把活动
对象
作为变量
对象
,在作用域中定义的变量保存在对应执行环境中的变量
对象
中(注意:执行环境本质上不等于作用域,但是二者是一 一对应关系)
全局
执行环境 浏览器加载html页面,最先创建、进入的就是
全局
执行环境 (即创建执行环境,把该执行环境
JavaScript
全局
对象
JavaScript
全局
对象
:
全局
属性和函数可用于所有内建的 JavaScript
对象
。可以作用于
全局
代码的调用,
全局
对象
是预定义的
对象
,作为 JavaScript 的
全局
函数和
全局
属性的占位符。通过使用
全局
对象
,可以访问所有其他所有预定义的
对象
、函数和属性。
全局
对象
不是任何
对象
的属性,所以它没有名称。在顶层 JavaScript 代码中,可以用关键字 this 引用
全局
对象
。但通常不必用这种方式引用
全局
对象
,因为
全局
对象
是作用域链的头,这意味着所有非限定性的变量和函数名都会作为该
对象
的属性来查询。例如
C++之
全局
对象
,局部
对象
,静态局部
对象
先说两个概念:作用域(scope) 和生命周期(lifetime) 作用域: 名字的作用域指的是知道该名字的程序文本区域 生命周期:
对象
的生命周期指在程序执行过程中
对象
存在的时间
全局
对象
, 顾名思义是
全局
的
对象
,其作用域是整个程序文本,其
对象
的声明周期是整个程序的执行过程; 局部
对象
: 一般说的局部变量都指的是动态局部变量,包括形参,某个语句块中定义的变量等。 动态局部变量是自
C++之
全局
对象
、局部
对象
、静态
对象
详解
1. 对于
全局
对象
,程序一开始,其构造函数就先被执行(比程序进入点更早);程序即将结束前其析构函数将被执行。 2. 对于局部
对象
,当
对象
诞生时,其构造函数被执行;当程序流程将离开该
对象
的声明周期时,其析构函数被执行。 3. 对于静态(static)
对象
,当
对象
诞生时其构造函数被执行;当程序将结束时其析构函数才被执行,但比
全局
对象
的析构函数早一步执行。 4. 对于以new方式产生出来的局部
对象
C++ 语言
65,186
社区成员
250,526
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章