在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的具體作用並無太大差別。
相關文章
- 終於在itpub申請到個人空間了
- 區域性變數申請棧空間時的入棧順序變數
- 為App申請更多的記憶體空間APP記憶體
- 矩陣空間採用 new 動態申請,儲存在指標中矩陣指標
- C#中堆和堆疊的區別C#
- 新版OpenShift空間申請使用教程:安裝WP、域名繫結等
- 資料結構-malloc申請動態空間-連結串列的建立資料結構
- C++中struct的空間計算C++Struct
- Python中堆、棧、佇列之間的區別Python佇列
- go區域性變數的儲存空間是堆還是棧?Go變數
- java中堆與棧 java中資料佔用記憶體空間的大小Java記憶體
- 【TUNE_ORACLE】檢視Oracle的壞塊在空閒空間中還是在已用空間中的SQL參考OracleSQL
- Linux中斷申請Linux
- 在Linux中增加swap空間Linux
- JN專案-對社團申請進行排序,按照申請時間和稽核時間降序排序
- 思科專利申請中設想在區塊鏈上群聊區塊鏈
- 臨時表空間的申請與釋放問題學習_20091203
- java - OutOfMemoryError: Java heap space 堆空間不足JavaError
- C和C++中的名字空間和作用域C++
- 【轉】極品免費網站空間申請:000webhost.com免費1.5G美國空間PHP+MySQL網站WebPHPMySql
- 虛擬地址空間,堆疊,堆,資料段,程式碼段
- 原地旋轉矩陣(不申請新的記憶體空間旋轉矩陣)矩陣記憶體
- 摩根大通申請基於區塊鏈的銀行間支付專利區塊鏈
- 掌握時間與空間:深入探討Golang中的時間戳與時區轉換Golang時間戳
- C++筆記--名字空間和異常C++筆記
- 區塊鏈牌照,外匯牌照為什麼在申請加拿大MSB區塊鏈
- 表在表空間中的儲存情況
- 蘋果賬號現在好申請嗎蘋果
- C++名稱空間C++
- C++ 名稱空間C++
- 避免Java堆空間錯誤的5個步驟Java
- 請問: 在Struts中 ActionFrom vs DynaActionForm 的區別與用法?ORM
- 12米空間解析度DEM資料申請下載:TanDEM-X資料集
- C++ 中名稱空間的 5 個常見用法C++
- 堆和棧在物理上的區別
- 加分申請
- 申請加分
- Java中堆和棧的區別Java