您的位置:首页 > 编程语言 > C语言/C++

[C++]C++对象的生存周期

2016-04-11 09:26 225 查看
代码说明:
类A,含构造函数和析构函数
普通函数fun,函数体里新建了类A的局部自动对象
FunObj
和局部静态对象
InStaObj

main方法新建了类A的局部自动对象
MainObj
,调用
fun
方法
外面新建了A的的外部静态对象
ExStaObj
和外部对象
GblObj


输出:

若将
A GblObj("外部对象GblObj"); 
写在
static
A ExStaObj("外部静态对象ExStaObj");
前面,则输出时两者顺序也颠倒。


分析

创建顺序

外部静态对象or外部对象优先于main函数
销毁顺序

和创建顺序相反,注意静态对象会在main函数执行完才会销毁


内存的三种分配方式

从静态存储区分配:此时的内存在程序编译的时候已经分配好,并且在程序的整个运行期间都存在。全局变量,static变量等在此存储
在栈区分配:相关代码执行时创建,执行结束时被自动释放。局部变量在此存储。栈内存分配运算内置于处理器的指令集中,效率高,但容量有限
在堆区分配:动态分配内存。用new/malloc时开辟,delete/free时释放。生存期由用户指定,灵活。但有内存泄露等问题

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: