20221024学习内容
Stack
存在于某个作用域的一块内存空间。当你调用函数时,函数本身会形成一个stack来放置所接受的参数,以及返回地址。
在函数本体中声明的任何变量,其所使用的内存都取自上述stack。
Heap
是由操作系统提供的全局的内存空间,程序可动态分配从中获得若干区块。
内存泄漏
是指我们失去了对该块内存的控制权,比如new出的对象忘记delete,出了该对象的作用域后,没机会释放该内存。
new
在编译器中被分解为三个动作,1分配内存(malloc函数),2指针转型,3调用构造函数。
delete
先调用析构函数(清除内存中的数据),再释放内存(free函数)。
申请数组
person p = new person[15]必须和delete[] p;配合使用。如果不加上[],系统只会删除数组头的内存。