new 和 delete 運算符

爲了提高程序的通用性和內存的利用率,實際編程時,經常出現在程序運行過程中,根據程序對內存的實際需求來分配存儲空間的情況


如下列程序:

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;



發佈了57 篇原創文章 · 獲贊 10 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章