使用malloc函數申請內存空間需要了解:(malloc的原型爲:(void *) malloc(int size) )
1)內存分配給誰?
2)分配多大的內存?
3)是否還有足夠內存分配?
4)內存將用來存儲什麼格式的數據?
5)分配的內存在哪裏?
舉例:
char *p = (char *) malloc(1000);
在堆上分配了1000個字節的內存,返回這塊內存的首地址,把地址強制轉換成 char *類型後賦給char *類型的指針變量p;這塊地址是用來保存char類型的數據。
使用malloc函數申請內存空間注意事項:
1)內存是否申請成功? if( NULL !=p )
2)使用結束後,一定要釋放,要求malloc和free符合一夫一妻制;
3)內存釋放後(使用free函數之後指針變量p本身保存的地址並沒有改變),需要將p的值賦值爲NULL(拴住野指針)。
char *p = (char *) malloc(1000);
if (NULL != p)
{
......
free(p);
p = NULL;
}
else
{
}