C++面向对象基础(3)-栈与内存管理

Stack(栈)

栈是存在于某作用域的一块内存空间(memory space)。比如当调用函数,函数本身会形成一个stack用来放置它所接收的参数以及返回地址,局部变量(函数本体内声明的任何变量,及其所使用的内存块)。

Heap(堆)

System heap,由操作系统提供的一块global内存空间,程序可动态分配,动态获取若干区块。

{
  Complex c1(1,2);  //c1所占用的空间来自Stack
  Complex* p = new Complex(3);  //new的空间是动态分配获取,来自heap,用完后需要delete
}

{Complex c1(1,2)},为stack object,其生命在scope结束后消失,这种local object,又叫auto object,因为它会自动清理(自动调用析构函数)。
{static Complex c2(1,2)},为static object,其生命在作用域结束之后仍存在,直到整个程序结束。
Complex c3(1,2)写在任何作用域之外,全局作用域之中的,为global object,其生命在整个程序结束之后才结束

new先分配内存,再调用构造函数
delete先调用析构函数,再释放内存
Array new要搭配Array delete

posted @ 2022-03-25 16:02  Stella77  阅读(62)  评论(0)    收藏  举报