C語言中malloc是動態內存分配函數。
函數原型:void *malloc(unsigned int num_bytes);
參數:num_bytes 是無符號整型,用於表示分配的字節數。
返回值:如果分配成功則返回指向被分配內存的指針(此存儲區中的初始值不確定),否則返回空指針NULL。void* 表示未確定類型的指針,void *可以指向任何類型的數據,更明確的說是指申請內存空間時還不知道用戶是用這段空間來存儲什么類型的數據(比如是char還是int或者...)
功能:分配長度為num_bytes字節的內存塊
注意:當內存不再使用時,應使用free()函數將內存塊釋放。函數返回的指針一定要適當對齊,使其可以用於任何數據對象。關於該函數的原型,在以前malloc返回的是char型指針,新的ANSIC標准規定,該函數返回為void型指針,因此必要時要進行類型轉換。
實例:
#include"stdio.h"
#include"malloc.h"//malloc()函數被包含在malloc.h里面
int main(void)
{
char*a=NULL;//聲明一個指向a的char*類型的指針
a=(char*)malloc(100*sizeof(char));//使用malloc分配內存的首地址,然后賦值給a
if(!a)//如果malloc失敗,可以得到一些log
{
perror("malloc");
return-1;
}
sprintf(a,"%s","HelloWorld\n");//"HelloWorld\n"寫入a指向的地址
printf("%s\n",a);//輸出用戶輸入的數據
free(a);//釋放掉使用的內存地址
return0;//例2有無內存泄露?
}
(分配類型 *)malloc(分配元素個數 *sizeof(分配類型))
如果成功,則返回該空間首地址,該空間沒有初始化,如果失敗,則返回0
轉自:https://zhidao.baidu.com/question/323407073.html