爲了提高程序的通用性和內存的利用率,實際編程時,經常出現在程序運行過程中,根據程序對內存的實際需求來分配存儲空間的情況
如下列程序:
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;