malloc 和calloc 區別分析

2021-09-28 02:29:05 字數 740 閱讀 6369

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

malloc() 函式有乙個引數,是需要分配空間的大小(單位是位元組)

calloc()函式有兩個引數,第乙個引數是元素的數目,第二個是每個元素的大小

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

函式malloc()和函式calloc()的主要區別是前者不能初始化所分配的記憶體空間,而後者能。

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

int

main()

int

main

(void

)sprintf

(a,"%s"

,"helloworld\n");

//"helloworld\n"寫入a指向的位址

printf

("%s\n"

,a);

//輸出使用者輸入的資料

free

(a);

//釋放掉使用的記憶體位址

return0;

//例2有無記憶體洩露?

}

malloc 和 calloc 的區別

void calloc size t num elements,size t element size void malloc size t size calloc和malloc都用於分配記憶體。1.malloc函式 malloc函式可以從堆上獲得指定位元組的記憶體空間,其函式宣告如下 void m...

malloc和calloc的區別

函式 malloc 和calloc 都可以用來動態分配記憶體空間 但兩者稍有區別。malloc 函式有乙個引數 即要分配的記憶體空間的大小 void malloc size t size calloc 函式有兩個引數 分別為元素的數目和每個元素的大小 這兩個引數的乘積就是要分配的記憶體空間的大小。v...

malloc 和calloc 的區別

malloc 和calloc 的區別 1 函式引數 函式malloc 和calloc 都可以用來動態分配記憶體空間,但兩者稍有區別。malloc 函式有乙個引數,即要分配的記憶體空間的大小 void malloc size t size calloc 函式有兩個引數,分別為元素的數目和每個元素的大小...