在C++中申請堆區空間與在C中申請堆區空間的異同點
在C++中申請堆區空間與在C中申請堆區空間的異同點
在c++中,使用new申請空間,delete釋放空間。
c語言中,使用malloc申請空間,free釋放空間。
new delete使用例:
int *p = new int;
delete p;
malloc free使用例:
int *p = (int*)malloc(sizeof(int));
free(p);
1.malloc申請的空間時不能在同一語句內給申請的空間初始化,
而new就可以:
int *p = new int(22);
有:*p == 22 。
2.申請陣列和釋放陣列時形式不同
malloc free:
int *p = (int*)malloc(sizeof(int)*5);
while(1)
{
static int i = 0;
free(p[i]);
if(4 == i )
{
break;
}
i++;
}
需要運用到迴圈來進行釋放。
new delete:
int *p = new int[5];
delete[] p;
(注:申請陣列時無法像申請單個變數時進行初始化,需要運用到memset函式,該函式的三個引數分別是:1.陣列首元素地址2.具體賦值數值(此函式按位元組賦值)3.陣列長度(位元組數))。
3.new在申請物件空間時,可以觸發構造和析構,C語言的malloc則無法觸發
當然,在申請變數,陣列或者結構體等等空間時,new和malloc的具體作用並無太大差別。
相關文章
- 矩陣空間採用 new 動態申請,儲存在指標中矩陣指標
- 資料結構-malloc申請動態空間-連結串列的建立資料結構
- C++中struct的空間計算C++Struct
- Python中堆、棧、佇列之間的區別Python佇列
- go區域性變數的儲存空間是堆還是棧?Go變數
- 【TUNE_ORACLE】檢視Oracle的壞塊在空閒空間中還是在已用空間中的SQL參考OracleSQL
- Linux中斷申請Linux
- C和C++中的名字空間和作用域C++
- 摩根大通申請基於區塊鏈的銀行間支付專利區塊鏈
- 思科專利申請中設想在區塊鏈上群聊區塊鏈
- ifccolumn在空間中的座標計算
- 掌握時間與空間:深入探討Golang中的時間戳與時區轉換Golang時間戳
- C++名稱空間C++
- 請謹慎使用 avaliable 方法來申請緩衝區
- 區塊鏈牌照,外匯牌照為什麼在申請加拿大MSB區塊鏈
- 12米空間解析度DEM資料申請下載:TanDEM-X資料集
- 堆和棧在物理上的區別
- 在Android上優雅的申請許可權Android
- MySQL 中的共享表空間與獨立表空間如何選擇MySql
- Istio為什麼現在申請加入CNCF?
- 蘋果賬號現在好申請嗎蘋果
- 申請加分
- 加分申請
- c++系列:匿名名稱空間C++
- 區域性緊空間的基
- C++中堆和棧的完全解析C++
- 沃爾瑪申請專利,欲在區塊鏈上儲存支付資料區塊鏈
- 緊空間中的網
- 中國加密貨幣挖礦公司計劃在國外申請IPO加密
- C++ - 二級指標動態記憶體申請與釋放C++指標記憶體
- 堆在java中的應用--PriorityQueueJava
- C++系列: 巢狀名稱空間C++巢狀
- 期末申請加分
- AG介面申請
- 華為申請區塊鏈產權管理專利區塊鏈
- C++基礎-1-記憶體管理(全域性區、堆區、棧區)C++記憶體
- LINUX中斷--申請中斷和解除安裝中斷Linux
- const關鍵字在C與C++中修飾變數的區別C++變數