幾種動態分配內存的方法及區別

1) malloc 函數: void *malloc(unsigned int size)
在內存的動態分配區域中分配一個長度爲size的連續空間,如果分配成功,則返回所分配內存空間的首地址,否則返回NULL,申請的內存不會進行初始化。
2)calloc 函數: void *calloc(unsigned int num, unsigned int size)
按照所給的數據個數和數據類型所佔字節數,分配一個 num * size 連續的空間。
calloc申請內存空間後,會自動初始化內存空間爲 0,但是malloc不會進行初始化,其內存空間存儲的是一些隨機數據。
3)realloc 函數: void *realloc(void *ptr, unsigned int size)
動態分配一個長度爲size的內存空間,並把內存空間的首地址賦值給ptr,把ptr內存空間調整爲size。
申請的內存空間不會進行初始化。
4)new是動態分配內存的運算符,自動計算需要分配的空間,在分配類類型的內存空間時,同時調用類的構造函數,對內存空間進行初始化,即完成類的初始化工作。動態分配內置類型是否自動初始化取決於變量定義的位置,在函數體外定義的變量都初始化爲0,在函數體內定義的內置類型變量都不進行初始化。

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