c語言是利用庫函式malloc和free來分配和撤銷記憶體空間的;c++同樣提供了較簡便而功能較強的運算子new和delete來取代malloc和free函式。
在c++中,new和delete是運算子,不是函式,因此執行效率高,為了與c語言相容,c++仍保留malloc和free函 數,但不建議讀者使用malloc和free函式,而是使用new和delete運算子。
new
int;
//開闢乙個存放整數的儲存空間,返回乙個指向該儲存空 間的位址
newint
(100
)//開闢乙個存放整數的空間,並指定該整數的初值為100,返回乙個指向該儲存空間的位址
newchar[10
];//開闢乙個存放字元陣列的空間,返回首元素的位址
newint[3
][4]
;//開闢乙個存放二維整型陣列的空間,返回首元素的位址
float
*point=
newfloat
(3.1415);
//開闢乙個存放單精度數的空間,並指定該實數的初值為3.1415,將返回的該空間的位址賦給指標變數point
new運算子使用的一般格式
new 型別 [初值]
在c++中,用new分配陣列空間時不能指定初值,如果由於記憶體不足導致無法正常分配空間,則new會返回 乙個空指標null,讀者可以根據該指標的值判斷分配空間是否成功。
c++在動態分配或撤銷空間時,往往將new、delete兩個運算子和結構體結合使用。
經典案例:c++實現開闢空間存放結構體變數。
#include
//預處理
#include
using
namespace std;
//命名空間
struct student
;int
main()
//主函式
編譯執行結果:
10001
yan xiao linm--
----
----
----
----
----
----
----
--process exited after 2.318 seconds with return value 0
請按任意鍵繼續.
..
c++存放結構體變數 關於C 動態分配
一 c 提供的預設成員方法 1.1 預設建構函式如無定義建構函式 12 拷貝建構函式如無定義。1.3 賦值執行符 如無定義。1.4 位址執行符如無事實上義 2 類成員中含動態分配的指標 2.1 需重新定義拷貝結構函式,避免呼叫隱式拷貝建構函式。2.2 重新定義執行符 過載函式,避免呼叫隱式拷貝建構函...
C語言動態分配記憶體
動態開闢記憶體的函式 void malloc size t size 這個函式向記憶體申請 塊連續可 的空間,並返回指向這塊空間的指標 如果開闢成功,則返回 個指向開闢好空間的指標 如果開闢失敗,則返回 個null指標,因此malloc的返回值 定要做檢查 返回值的型別是 void 所以malloc...
動態分配const物件(C )
在c 中,允許動態建立const物件,格式如下 const int p new const int 128 與其他常量一樣,動態建立的const物件必須在建立時初始化,並且初始化後,其值不能改變。儘管不能改變const物件的值,但可以刪除動態建立的const物件,格式如下 delete p 這個和普...