程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 內存分配malloc函數注意事項。

內存分配malloc函數注意事項。

編輯:關於C語言

malloc的全稱是memory allocation,中文叫動態內存分配,用於向系統申請分配指定字節的內存空間


原型:extern void *malloc(unsigned int num_bytes);

 

看原型很頭疼,來兩個例子:

*= ( *) malloc (()*);
 *pd=( *) malloc (()*);

 通過這2個聲明可以看出malloc的用法:

又是指針。malloc函數返回值類型為void *,但void* 類型可以強制轉換為任何其它類型的指針。相當於malloc可以返回任何類型的指針。

幾乎只要用到malloc的地方就要用到強制轉換,因為應該沒人會用一個void類型處理實際數據吧。

幾乎只要用到malloc的地方就要用到sizeof(),這個不用解釋。

即:   類型 *指針=(類型*) malloc ( sizeof(類型) );

這個原型看起來容易多了。

 

需注意的問題:

用malloc動態申請內存塊時,最好進行返回值的判斷。

分配失敗返回空指針NULL。

內存不再使用時,應使用free()函數將內存塊釋放。

建議養成強制轉換的習慣。

 

malloc 和 new 不同:

new 返回指定類型的指針,並且可以自動計算所需要大小。

malloc 則必須要由我們計算字節數,並且在返回後強行轉換為實際類型的指針。

 

例3:

 stu *=( stu *)malloc(( stu));

套用上面的公式,我們可以方便的寫出自己的例子,例3先定義一個結構體指針pb,再分配一個結構體大小的內存空間,並把首地址賦給pb;

當我們使用鏈表時,用malloc分配空間將會非常實用。

 

 

   

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved