c++学习笔记(十)

日期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(删除指针)

猜你喜欢

转载自www.cnblogs.com/lkdj/p/12274767.html