想問一下malloc函式要怎樣使用?
uj5u.com熱心網友回復:
看這篇帖子吧https://blog.csdn.net/u012803067/article/details/60573239uj5u.com熱心網友回復:
int *p=(int *)malloc(sizeof(int)*n) n是你自己決定要申請幾個int型的位元組uj5u.com熱心網友回復:
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://www.uj5u.com/houduan/8043.html
標籤:基礎類
上一篇:基礎問題
下一篇:有會做獲取網站訪客電話資料的嗎?
