第6讲动态内存分配和引用 教学目的与要求: 了解动态内存分配和引用的含义。 掌握new和 delete的使用及引用的使用。 教学内容提要 1、动态内存分配 2、引用; 3、课堂练习; 教学重点:new和 deletep使用和引用的使用 教学难点:new和 delete的使用和引用的使用。 教学进度:P35-P44 教学过程:
•教学目的与要求: 了解动态内存分配和引用的含义。 掌握new和delete的使用及引用的使用。 •教学内容提要: 1、动态内存分配 2、引用; 3、课堂练习; •教学重点:new和delete的使用和引用的使用。 •教学难点:new 和delete的使用和引用的使用。 •教学进度:P35-P44 •教学过程: 第 6 讲 动态内存分配和引用
61动态内存分配 动态内存分配是指在程序运行期间根据实际需要随时申请 内存,并在不需要时释放。 静态存储区二在程序运行开始前就分配的存储空间 按所占内存分类栈 局部变量在栈中分配存储空间。 堆也称为自由存储单元,动态内存分 配就是在堆中进行的。 在C艹+中进行动态内存分配时可使用运算符new和运算 符 delete,相应地我们把申请和释放内存的过程称作创建 L和删除 保持与C语言的兼容性,保留了C语言中在 alloc.h头 文件中用于动态内存分配的两个库函数:maoc0(与运算 符new功能类似)和re0(与运算符 delete功能类似)
动态内存分配是指在程序运行期间根据实际需要随时申请 内存,并在不需要时释放。 按所占内存分类 静态存储区 栈 在程序运行开始前就分配的存储空间。 局部变量在栈中分配存储空间。 堆 也称为自由存储单元,动态内存分 配就是在堆中进行的。 在C++中进行动态内存分配时可使用运算符new和运算 符delete,相应地我们把申请和释放内存的过程称作创建 和删除。 【6.1 动态内存分配】 保持与C语言的兼容性,保留了C语言中在alloc.h头 文件中用于动态内存分配的两个库函数:malloc()(与运算 符new功能类似)和free()(与运算符delete功能类似)。 注
(6.1.1 new 关键字new的作用是从堆中为程序分配指定数据类型所需 的内存单元。若分配成功,则返回其首地址;否则,返回 个空指针。new返回的内存地址必须赋给指针 使用格式: new类型名 //动态变量 new类型名(初值 new类型名[元素个数]/动态数组 功能: 生成一个(或一批)所给类型的无名动态变量,返回 所生成变量的一个指针值(首地址)
使用格式: new 类型名 //动态变量 new 类型名 ( 初值 ) new 类型名 [ 元素个数 ] //动态数组 功能: 生成一个(或一批)所给类型的无名动态变量,返回 所生成变量的一个指针值(首地址)。 关键字new的作用是从堆中为程序分配指定数据类型所需 的内存单元。若分配成功,则返回其首地址;否则,返回 一个空指针。new返回的内存地址必须赋给指针。 【 6.1.1 new】
例:int米pi,米pj,a=10; char米pC; p1= new int pi=a米a; pc =new char(A') pj= new int[101 (6.1.2 delete 使用格式: delete指针或 delete[]指针 功能:释放通过new生成的动态变量(或动态数组) 但指针变量仍存在
例:int *pi, *pj, a=10; char *pc; pi = new int; *pi = a*a; pc = new char('A'); pj = new int[10]; 使用格式: delete 指针 或 delete [ ] 指针 功能: 释放通过new生成的动态变量(或动态数组), 但指针变量仍存在。 【 6.1.2 delete】
例 int米pi,米pj p1= new int pj= new int[1o] delete pi //释放动态变量*pi,但指针变量pi仍存 在 delete [lpj
例: int *pi, *pj; pi = new int; pj = new int[10]; ... delete pi; //释放动态变量*pi, 但指针变量pi仍存 在 delete []pj;