日期2.6
两种内存的来源:stack&heap
Steak 是存在于某作用域的内存空间。在函数本体内没有特殊声明,所使用的内存块都属于steak。
Heap是操作系统提供的全局内存空间,取得方式为动态取得(即new)
举例:
Class complex{ };
…..
{
complex c1(1,2); //离开作用域后,生命结束,其析构函数被调用。因为它在栈里面,不需要delete
Complex*p new complex(3);//创建一个复数,初值为3,内存来自于heap
}
差别:后者可以在程序的任何地方以new的方式获得,使用完后要delete,否则会造成内存泄漏。
Local object/auto object,Static object,Global object的含义与c语言中相似。
创建对象的新方式:new
之前有提到的
例如:complex*pc=new complex(1,2);
New大致被分解为两个过程:
1、调用函数获得内存
2、调用构造函数
pc->complex::complex(1,2) //其中有隐藏的“this”
delete大致被分解为两个过程:
1、先调用析构函数(删除动态内存)
2、释放memory(删除指针)