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函式時,它沿連線表尋找乙個大到足以滿足使用者請求所需要的記憶體塊。然後,將該記憶體塊一分為二 一塊的大小與使用者請求的大小相等,另一塊的大小就是剩下的位元組 接下來,將分配給使用者的那塊記憶體傳給...