為了提高程式的通用性和記憶體的利用率,實際程式設計時,經常出現在程式執行過程中,根據程式對記憶體的實際需求來分配儲存空間的情況
如下列程式:
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 庫中...