1. 程式人生 > >C語言malloc與C++裡面new的對比

C語言malloc與C++裡面new的對比

int *p=new int; //開闢一個存放整型資料的儲存空間,同時返回指向一個該空間的地址((int*)型,就是一個指標)
new int (100); //開闢一個存放整型資料的儲存空間,同時返回指向一個該空間的地址,並且賦予了該整型資料初值為100

int *p1=new int [100]; //開闢一段存放100個整型資料的儲存空間,同時返回指向一個該空間的地址

回收空間:元素和空間的區別
一個元素:delete p;
一個數組:delete [] p1;
p=nullptr;
p1= nullptr;

obj是一個類型別
obj *objects = new obj[100];

// 建立100個動態物件

delete []objects; //釋放這一段空間

objects=nullptr; //釋放之後不要忘記置空

malloc,free與new,delete的區別
malloc需要自己計算位元組數,new會根據型別自動計算位元組數
malloc返回一個空指標,需要自己進行型別轉換,new 自動匹配指標型別
malloc不會自動呼叫類的建構函式,new會自動呼叫類的建構函式;
free一個物件時,不會自動呼叫類的建構函式,delete一個物件時會自動呼叫類的解構函式;
(若釋放陣列時則要新增括號delete[]Arr);

malloc,free是函式,new,delete是運算子;
new和delete:用於元素的申請
new[]和delete[]用於陣列的申請;