函式malloc 和函式calloc 區別介紹

2021-08-05 18:57:03 字數 725 閱讀 8297

參考:  表示感謝! 函式

malloc()和calloc()都可以用來動態分配記憶體空間,但兩者稍有區別。

malloc()函式有乙個引數,即要分配的記憶體空間的大小:

void *malloc(size_t

size);

calloc()函式有兩個引數,分別為元素的數目和每個元素的大小,這兩個引數的乘積就是要分配的記憶體空間的大小。

void *calloc(size_t numelements,size_t sizeofelement);
如果呼叫成功

,函式malloc()和函式calloc()都將返回所分配的記憶體空間的首位址。

函式malloc()和函式calloc()的主要區別是前者不能初始化所分配的記憶體空間,而後者能。如果由malloc()函式分配的記憶體空間原來沒有被使用過,則其中的每一位可能都是0;反之,如果這部分記憶體曾經被分配過,則其中可能遺留有各種各樣的資料。也就是說,使用malloc()函式的程式開始時(記憶體空間還沒有被重新分配)能正常進行,但經過一段時間(記憶體空間還已經被重新分配)可能會出現問題。 函式

calloc()會將所分配的記憶體空間中的每一位都初始化為零,也就是說,如果你是為字元型別或整數型別的元素分配記憶體,那麼這些元素將保證會被初始化為0;如果你是為指標型別的元素分配記憶體,那麼這些元素通常會被初始化為空指標;如果你為實型資料分配記憶體,則這些元素會被初始化為浮點型的零。

calloc 函式和malloc 函式

calloc 配置記憶體空間 malloc,free,realloc,brk include void calloc size t nmemb,size t size calloc 用來配置nmemb個相鄰的記憶體單位,每一單位的大小為size,並返回指向第乙個元素的指標。這和使用下列的方式效果相同...

malloc函式和free函式

c語言中的動態記憶體分配函式malloc和free使用起來很靈活,但是也很容易導致錯誤,如果知道了malloc和free的實現原理,那麼,出錯的機會就很小了。malloc的實現原理 作業系統維護了乙個將可用的記憶體塊連線為乙個長長的列表的所謂空閒鍊錶。呼叫malloc函式時,作業系統沿鍊錶尋找乙個大...

malloc 函式和realloc 函式

base type malloc type t type size 分配長度為type t type size位元組的記憶體塊,可存放type t個type型別的變數。返回值 返回空指標null表示記憶體申請失敗,如果分配成功則返回指向被分配記憶體的指標。引數 type 表示變數型別 type t ...