一、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 了!!!)