記憶體分配malloc函式注意事項。

2022-04-30 17:03:10 字數 1046 閱讀 6759

malloc的全稱是memory allocation,中文叫動態記憶體分配,用於向系統申請分配指定位元組的記憶體空間

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

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

int*p; 

p = (int *) malloc (sizeof(int)*128);//

分配128個整型儲存單元

double *pd=(double *) malloc (sizeof(double)*12);//

分配12個double型儲存單元

通過這2個宣告可以看出malloc的用法:

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

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

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

即:型別 *指標=(型別*) malloc ( sizeof(型別) );

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

需注意的問題:

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

分配失敗返回空指標null。

記憶體不再使用時,應使用free()函式將記憶體塊釋放。

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

malloc 和 new 不同:

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

malloc 則必須要由我們計算位元組數,並且在返回後強行轉換為實際型別的指標。

例3:

struct stu *pb;

pb=(struct stu *)malloc(sizeof(struct stu));

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

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

malloc函式 動態記憶體分配

malloc 向系統申請分配指定size個位元組的記憶體空間。返回型別是 void 型別。void 表示未確定型別的 指標。c,c 規定,void 型別可以 強制轉換 為任何其它型別的指標。原型 extern void malloc unsigned int num bytes 標頭檔案 在tc2....

malloc記憶體分配原理

一 malloc的工作機制 它有乙個將可用的記憶體塊連線為乙個長長的列表的所謂空閒鍊錶。呼叫malloc函式時,它沿連線表尋找乙個大到足以滿足使用者請求所需要的記憶體塊。然後,將該記憶體塊一分為二 一塊的大小與使用者請求的大小相等,另一塊的大小就是剩下的位元組 接下來,將分配給使用者的那塊記憶體傳給...

malloc記憶體分配原理

一 malloc的工作機制 它有乙個將可用的記憶體塊連線為乙個長長的列表的所謂空閒鍊錶。呼叫malloc函式時,它沿連線表尋找乙個大到足以滿足使用者請求所需要的記憶體塊。然後,將該記憶體塊一分為二 一塊的大小與使用者請求的大小相等,另一塊的大小就是剩下的位元組 接下來,將分配給使用者的那塊記憶體傳給...