C++提供的new 和delete运算符能够动态进行内存的分配和回收,那么如何使用new和delete运算符进行内存的动态分配和回收呢?
数组能够对大量的数据进行有效的管理,在定义数组时就要确定数组的长度,但很多情况下,在程序运行之前,是没法预知数据的规模,如果定义数组的长度比较大则造成内存空间的浪费,长度过小则出现数组越界的错误。C++动态内存分配技术可以保证程序在运行过程中按照实际需要申请适量的内存,使用后再进行释放。这种在程序运行过程中申请和释放的内存单元称为堆内存。C++仍保留了C 语言中malloc和free函数用于堆内存分配,但C++提供了应用简单效率更高的new 和delete运算符来取代malloc和free函数。
运算符new 用于动态内存分配的最基本形式为:
在程序运行过程中,new 运算符返回的是一个指向所分配的一块与类型字节数相适应的内存空间的指针。对所创建的内存空间,都是通过该指针来间接操作的。例如:
int∗p =new int;
C++允许对新生成的对象提供初始化值,例如:
int∗ptr=new int(20);
运算符delete用于释放运算符new 所分配的内存空间,例如:
delete ptr;(www.daowen.com)
运算符new 可用于动态分配数组。例如:
int∗p Array=new int[10];
上述语句的意思是动态分配10个整型数据元素的数组,并把数组的首地址赋给指针变量p Array。要删除动态分配的数组,可以使用以下语句:
delete[]p Array;
上述语句将释放p Array所指向的内存单元。
重点提示
如果上述句不包括[],只释放数组中第一个元素空间。
【例1.12】使用new 运算符动态分配一个整型数组,赋值并打印。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。