malloc函式用法

2021-08-22 08:38:10 字數 710 閱讀 5806

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 用變數表示長度,想對陣列的大小作動態說明,這是錯誤的。但是在實際的程式設計中,往往會發生這種情況,即所需的記憶體空間取決於實際輸入的資...