malloc()函數有壹個參數,即要分配的內存空間的大小:
void
*malloc(size_t
size);
calloc()函數有兩個參數,分別為元素的數目和每個元素的大小,這兩個參數的乘積就是要分配的內存空間的大小。
void
*calloc(size_t
numElements,
size_t
sizeof
(Element));
如果調用成功,函數malloc()和函數calloc()都將返回所分配的內存空間的首地址。
函數malloc()和函數calloc()的主要區別是前者不能初始化所分配的內存空間,而後者能。
如果由malloc()函數分配的內存空間原來沒有被使用過,則其中的每壹位可能都是0;反之,如果這部分內存曾經被分配過,則其中可能遺留有各種各樣的數據。也就是說,使用malloc()函數的程序開始時(內存空間還沒有被重新分配)能正常進行,但經過壹段時間(內存空間還已經被重新分配)可能會出現問題。
函數calloc()會將所分配的內存空間中的每壹位都初始化為零,也就是說,如果妳是為字符類型或整數類型的元素分配內存,那麼這些元素將保證會被初始化為0;如果妳是為指針類型的元素分配內存,那麼這些元素通常會被初始化為空指針;如果妳為實型數據分配內存,則這些元素會被初始化為浮點型的零。