编程论坛
注册
登录
编程论坛
→
C++教室
求:关于对象(变量)的生命周期问题(很白的问题)
kinghao
发布于 2010-05-24 12:03, 1300 次点击
不同定义方式下的对象(变量)的生命周期发生怎样不同 (如全局变量、局部变量、静态变量、动态分配对象、类成员变量等)
能举例说明下吗?谢谢~
3 回复
#2
ciweitou163
2010-05-24 13:58
一时间也说不太清楚,不过我在网上找到一个好资料!一起学习下吧
http://learn.
#3
zhqhzhqh
2010-05-24 21:30
全局变量 先于程序分配,在程序运行整个周期有效
普通局部变量 从分配到程序走出作用域有效
静态变量 从分配处开始到程序结束有效
动态分配对象 从分配到回收,自由控制,如果忘记回收,有两种可能,正常结束的程序系统一般自动回收,如果非正常退出,很有可能出现内存泄露
类成员变量 生命周期同对象,若是静态类成员变量,在类外赋初值,生命周期未知。
#4
最近不在
2010-05-24 22:15
程序代码:
//
Note:Your choice is C++ IDE
#include <iostream>
using
namespace
std;
int
a =
1
;
//
全局变量,全局作用域,程序结束时生命期结束
static
int
b =
2
;
//
该文件内的全局变量,程序结束时生命期结束
int
main()
{
int
c =
3
;
//
局部作用域,在main}后结束生命期,也就是程序结束时,因为main是程序的入门
static
int
d =
4
;
//
生命期为程序结束时,不过该e的可见性只在main内
for
(
int
i =
0
; i <
10
; i++)
//
i作用域应该在for到}这个范围了
{
static
int
e =
5
;
//
生命期为程序结束时,不过该e的可见性只在{}内
int
f =
6
;
//
生命期在语句作用域内
}
//
i生命期结束
char
p =
new
char
[
3
];
//
.........
delete
[] p;
//
生命期在其delete时结束
//
对象一般也在}时结束其生命期,调用析构函数后作为其结束的标志。原理跟基本类型差不多
//
关于类对象的生命周期,你可以自己写跟踪语句,很多东西自己尝试就可以出来的
return
0
;
}
1