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
浙公网安备 33010602011771号