(zz)淺談malloc與calloc、realloc、new 的區別

相關函數原型:

1. Malloc

作 用:Malloc用於動態申請存儲空間,它不是關鍵字,而是一個申請內存的函數

用 法:Malloc 返回一塊內存地址的指針,否則會返回空指針null,這裏要注意的是,當內存不再使用的時候,用free()函數進行對內存的釋放。

2.calloc

作 用:calloc()函數有兩個參數,分別爲元素的數目和每個元素的大小,這兩個參數的乘積就是要分配的內存空間的大小。

例 子:

3.realloc

作 用:重新分配內存空間。

例 子:

4.總結:

malloc: 動態分配size字節空間,返回它的指針。(此函數不能初始化內存空間)
calloc:動態分配n個連續的size字節空間,返回第一個指針。它有兩個參數,分別爲參數的數目,和每個參數的大小,那麼這兩個參數的乘積就是這個分配空間的大小。(此函數可以初始化內存空間)
realloc:將指針指向的內存空間擴展成n個,把它放在最後解釋因爲偶不建議使用,確實要用也要考慮多種情況。
free:釋放上述兩函數分配的空間;

 

malloc與new :

1 、new 建立的是一個對象,malloc 分配的是一塊內存。
2、malloc申請的是heap區的內存空間,返回的是指針。new 建立的對象你可以把它當成一個普通的對象,用成員函數訪問,不要直接訪問它的地址空間。(注意用delete釋放空間)。
3、malloc/free是C/C++中的方法(函數),new/delete是C++中的操作符。
4、使用free之前要判斷,使其free的指針是!NULL的,使用delete則無須判斷。
5、free掉的內存是該指針指向的一段內存空間,裏面應該是空的。而delete掉的內存是裏面確實存有數據或者對象的。

 

最後要注意的是malloc和free 、new和delete成對使用,以免不必要的麻煩。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章