第七章动态内存分配 7.1堆内存分配 7.2链表与链表的基本操作 7.3栈与队列的基本操作及其应用 7.4二叉树 7.5MFc对象 Windows和对象的关系
7.1 堆内存分配 7.5 MFC对象和Windows对象的关系 7.4二叉树 7.3 栈与队列的基本操作及其应用 7.2 链表与链表的基本操作 第七章 动态内存分配
7.1惟向存分配 7.1.1堆内存的分配与释放 7.1,2堆对象与构造函数 7.1.3浅拷贝与深拷贝 DU
7.1 堆内存分配 7.1.1堆内存的分配与释放 7.1.2 堆对象与构造函数 7.1.3 浅拷贝与深拷贝
71堆角存的分配与放 当程序运行到需要一个动态分配的变量或对象时,必须向系统 申请取得堆中的一块所需大小的存贮空间,用于存贮该变量或对 象。当不再使用该变量或对象时,也就是它的生命结束时,要显 式释放它所占用的存贮空间,这样系统就能对该堆空间进行再次 分配,做到重复使用有限的资源。 在C++中,申请和释放堆中分配的存贮空间,分别使用new和 deletel的两个运算符来完成,其使用的格式如下: 指针变量名=new类型名(初始化式); delete指针名; new运算符返回的是一个指向所分配类型变量(对象)的指 针。对所创建的变量或对象,都是通过该指针来间接操作的,而 DU
7.1.1 堆内存的分配与释放 当程序运行到需要一个动态分配的变量或对象时,必须向系统 申请取得堆中的一块所需大小的存贮空间,用于存贮该变量或对 象。当不再使用该变量或对象时,也就是它的生命结束时,要显 式释放它所占用的存贮空间,这样系统就能对该堆空间进行再次 分配,做到重复使用有限的资源。 在C++中,申请和释放堆中分配的存贮空间,分别使用new和 delete的两个运算符来完成,其使用的格式如下: 指针变量名=new类型名(初始化式); delete 指针名; new运算符返回的是一个指向所分配类型变量(对象)的指 针。对所创建的变量或对象,都是通过该指针来间接操作的,而 动态创建的对象本身没有名字
71,1堆角存的分配与释放 1.用初始化式( initializer)来显式初始化 堆 例如: int*pi=new int(o) 2.当p生命周期结束时,必须释放p所指向的目标 delete pli 注意这时释放了p所指的目标的内存空间,也就是撤销了该目标, 称动态内存释放( dynamic memory deallocation),但指针pi 本身并没有撤销,它自己仍然存在,该指针所占内存空间并未释放。 DEU
7.1.1 堆内存的分配与释放 1.用初始化式(initializer)来显式初始化 例如: int *pi=new int(0); 2.当pi生命周期结束时,必须释放pi所指向的目标: delete pi; 注意这时释放了pi所指的目标的内存空间,也就是撤销了该目标, 称动态内存释放(dynamic memory deallocation),但指针pi 本身并没有撤销,它自己仍然存在,该指针所占内存空间并未释放。 堆 Pi 0
71,1堆角存的分配与释放 1.用初始化式( initializer)来显式初始化 堆 例如: int piane 当pi生命周期结束时,必须释放p所指向的目标 delete pi; 注意这时释放了p所指的目标的内存空间,也就是撤销了该目标, 称动态内存释放( dynamic memory deallocation),但指针pi 本身并没有撤销,它自己仍然存在,该指针所占内存空间并未释放。 DEU
1.用初始化式(initializer)来显式初始化 例如: int *pi=new int(0); 2.当pi生命周期结束时,必须释放pi所指向的目标: delete pi; 注意这时释放了pi所指的目标的内存空间,也就是撤销了该目标, 称动态内存释放(dynamic memory deallocation),但指针pi 本身并没有撤销,它自己仍然存在,该指针所占内存空间并未释放。 7.1.1 堆内存的分配与释放 堆 Pi