new 和 delete 運算子

2021-07-31 23:54:02 字數 860 閱讀 7360

為了提高程式的通用性和記憶體的利用率,實際程式設計時,經常出現在程式執行過程中,根據程式對記憶體的實際需求來分配儲存空間的情況

如下列程式:

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;

new和delete運算子

動態建立的好處就在於能夠隨時分配空間,避免了預算和物理記憶體。並且結構體裡的變數必須用結構體的指標訪問,該指標使用前需開闢空間,用完後delete。new和delete運算子用於動態分配和撤銷記憶體的運算子 new用法 1.開闢單變數位址空間 1 new int 開闢乙個存放陣列的儲存空間,返回乙個...

C 的new運算子和delete運算子

c的指標如果想被分配記憶體,需要malloc函式,舉例 struct link head struct link malloc sizeof struct link 首先分配乙個struct link空間的大小,然後強轉成struct link的指標型別 這個就是鍊錶的頭節點建立。在c 中這個庫函式...

詳解C 中new運算子和delete運算子的使用

c 支援使用 new 和 delete 運算子動態分配和釋放物件。這些運算子為來自稱為 自由儲存 的池中的物件分配記憶體。new 運算子呼叫特殊函式 operator new,delete 運算子呼叫特殊函式 operator delete。在 visual c net 2002 中,標準 c 庫中...