malloc和new的區別

2021-06-29 00:03:49 字數 728 閱讀 8220

malloc的全稱是memory allocation,中文叫動態記憶體分配,在stdlib.h中宣告。

原型: void *malloc(size_t  size); 

說明:分配長度為size位元組的記憶體塊。如果分配成功則返回指向被分配記憶體的指標,分配失敗返回空指標null。        

1、在使用之前一定要檢查

返回的指標是否為空指標。

2、不使用的話一定要用free釋放掉。

另外: void *calloc(size_t  num_elements)

void *realloc(void *ptr,size_t new_size)

calloc也用來分配記憶體,與malloc的主要區別有 1:calloc在返回指向記憶體的指標的之前把它初始化為0。2:請求記憶體的數量的方式不同,calloc的引數包括所需元素的數量和每個元素的位元組數,根據這些能夠計算出總共需要的記憶體。

realloc函式用來修改乙個原先已經分配的記憶體大小,可以縮小也可以擴大。

示例:

/*本程式從標準輸入讀取資料,存入乙個陣列並且把陣列個數存入第乙個元素,

後面是輸入的數值*/

#include #include #define num 100;

int * readints()

array[count]=value;

}/*釋放沒有使用的記憶體,此處不能用free,否則array會全部釋放掉*/

if(count

new和malloc的區別

1 new 是c 中的操作符,malloc是c 中的乙個函式 2 new 不止是分配記憶體,而且會呼叫類的建構函式,同理delete會呼叫類的析構函式,而malloc則只分配記憶體,不會進行初始化類成員的工作,同樣free也不會呼叫析構函式 3 記憶體洩漏對於malloc或者new都可以檢查出來的,...

malloc和new的區別

1,malloc與free是c c語言的標準庫函式,new delete是c 的運算子。它們都可用於申請動態記憶體和釋放記憶體。2,對於非內部資料型別的物件而言,光用maloc free無法滿足動態物件的要求。物件在建立的同時要自動執行建構函式,物件在消亡之前要自動執行析構函式。由於malloc f...

new 和 malloc 的區別

new 和 malloc 的區別 1.malloc與free是c c語言的標準庫函式,new delete是c 的運算子。它們都可用於申請動態記憶體和釋放記憶體。2.對於非內部資料型別的物件而言,光用maloc free無法滿足動態物件的要求。物件在建立的同時要自動執行建構函式,物件在消亡之前要自動...