[008]C/C++系列 | Stack Object & Static Local Object & Global Object & Heap Object 生命周期

一、Stack Object

class Complex { ... };
...
{
    Complex c1(1,2);
}

备注:

c1便是所谓的stack object,其生命在作用域(scope)结束之后结束。这种作用域内的object,又称为auto object,因为会被自动清理

 

二、Static Local Object

class Complex { ... };
...
{
    static Complex c2(1,2);
}

备注:

c2便是所谓的static object,其生命在作用域(scope),结束之后仍然存在,直到程序结束

 

三、Global Object

class Complex { ... };
...
Complex c3(1,2);

int main()
{
    ...
}

备注:

c3便是所谓的global object,其生命在整一个程序结束之后才结束。也可以看做是一个static object

 

四、Heap Object

class Complex { ... };
...
{
    Complex* p = new Complex;
    ...
    delete p;
}

备注:

P所指向的便是Heap Object,其生命在他被deleted之后结束

注意:

class Complex { ... };
...

{
    Complex* p = new Complex;
}

以上会出现内存泄漏问题(memory heak)因为当前作用域结束,p所指向的heap object仍然存在,但是指针p的生命却 结束了,所用于之外再也看不到p(没机会delete p 了!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值