为了提高程序的通用性和内存的利用率,实际编程时,经常出现在程序运行过程中,根据程序对内存的实际需求来分配存储空间的情况
如下列程序:
int n;
cin>>n;
float a[n];
但是编译器在编译第三行时出错,原因是定义数组时下标表达式的值必须是:编译时有明确的值的常量
不过c++允许用new运算符申请动态内存的方法的解决上述程序
如:float * a = new float[n];
在c++中,new和delete运算符分别用于为指针变量 申请分配动态内存空间 和 收回指针所指向的内存空间
new运算符为指针变量动态分配内存空间的常用格式:
1 type * p = new type
功能:申请分配由类型 type 确定大小的一片连续的内存空间,并把所分配的内存空间的指针赋给p,当申请不成功时,p = 0;
2 type * p = new type (value)
功能:第二种格式除了完成第一种格式的功能外,还将value的值作为p所指的内存空间,对于这种格式,type不一定局限于基本数据类型
3 type * p = new type[value]
功能:分配指定类型的一维数组空间
delete运算符用来将动态分配的内存空间还给系统,常用格式为
1 delete p;
2 delete []p;
3 delete [size]p;