- 动态内存分配 (详解版)
????必要性
- 数组可以对大量的数据和对象进行有效管理,但很多情况下,程序运行之前并不能确切知道数组中元素的个数。
- 动态内存分配技术:保证程序在运行过程中按实际需要申请适量内存,且在使用结束后进行释放。
????new和delete
- 动态申请内存操作符
new
-
new 数据类型T(初始化参数列表)
,int * point = new int();
。 - 功能:在程序执行期间,申请用于存放T类型变量/对象的内存空间,并依初值列表赋以初值。
- 结果值:
- 成功:T类型的指针,指向新分配的内存;
- 失败:抛出异常。
-
- 释放内存操作符
delete
delete 指针p
- 功能:释放指针p所指向的内存。p必须是new操作的返回值。
- 注意:New分配的内存必须用delete加以释放。
????动态创建多维数组
new 类型名T[第1维长度][第2维长度]…;
- 如果内存申请成功,new运算返回一个指向新分配内存首地址的指针,是一个T类型的数组,数组元素的个数为除最左边一维外各维下标表达式的乘积。