1、函式宣告
void *malloc(int size);
說明:malloc向系統申請分配size位元組的記憶體空間,返回型別為void*型別。
2、使用
int *p;
p = (int *)malloc( sizeof(int) );
注意:(1)因為malloc返回的是不確定型別的指標,所以返回之前必須經過型別強制轉換,否則編譯報錯,如:「 不能將void*賦值給int*變數 」。
(2)malloc只管分配記憶體,並不會初始化,其記憶體空間中的值可能是隨機的。如果分配的這塊空間原來沒有被使用過,那麼其中每個值都可能是0。相反,空間裡面可能遺留各種各樣的值。
(3)實參為需要分配的位元組大小,如果malloc(1),那麼系統只分配了1個位元組的記憶體空間,這時注意,如果在這塊空間中存放乙個int值,由於int型別佔4個位元組,那麼還有3個位元組未分配空間,系統就會在已經分配的那1個位元組的基礎上,依次向後分配3個位元組空間,而這就占有了「別人」的3個位元組空間,「別人」原有的值就被清空了。
(4)分配的空間不再使用時,要用free函式釋放這塊記憶體空間。
3、示例
分配100個int型別的空間:
int *p;
p = (int )malloc( sizeof(int) 100 );
它開闢100個int單元,即400位元組。
然後p指向第乙個元素。重點內容
malloc函式用法
void malloc int size 說明 malloc向系統申請分配size位元組的記憶體空間,返回型別為void 型別。int p p int malloc sizeof int 注意 1 因為malloc返回的是不確定型別的指標,所以返回之前必須經過型別強制轉換,否則編譯報錯,如 不能將v...
malloc函式用法
原型 extern void malloc unsigned int num bytes 用法 i nclude 或 i nclude 功能 分配長度為num bytes位元組的記憶體塊 說明 如果分配成功則返回指向被分配記憶體的指標,否則返回空指標null。當記憶體不再使用時,應使用free 函式...
malloc函式及用法
動態儲存分配 在陣列一章中,曾介紹過陣列的長度是預先定義好的,在整個程式中固定不變。c語言中不允許動態陣列型別。例如 int n scanf d n int a n 用變數表示長度,想對陣列的大小作動態說明,這是錯誤的。但是在實際的程式設計中,往往會發生這種情況,即所需的記憶體空間取決於實際輸入的資...