malloc函式總結

2021-08-21 17:09:18 字數 806 閱讀 6729

函式定義

原型extern void*malloc(unsigned int num_bytes)

標頭檔案#include 

或者#include 

函式宣告

void *malloc(size_t size);

備註:void* 表示未確定型別的指標,void *可以指向任何型別的資料,更明確的說是指申請記憶體空間時還不知道使用者是用這段空間來儲存什麼型別的資料(比如是char還是int或者其他資料型別)。

返回值如果分配成功則返回指向被分配記憶體的指標(此儲存區中的初始值不確定),否則返回空指標null。當記憶體不再使用時,應使用free()函式將記憶體塊釋放。函式返回的指標一定要適當對齊,使其可以用於任何資料物件。

使用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函式釋放這塊記憶體空間。

關於malloc函式

關於malloc函式的筆記 1 當乙個程式另外需要一些記憶體時,它就呼叫malloc 函式,malloc從記憶體池中提取一塊合適的記憶體,並向該程式返回乙個指向這塊記憶體的指標。這塊記憶體此時並沒有以任何方式進行初始化。是指標指向的記憶體沒有初始化,不是指標沒有初始化。2 當一塊以前分配的記憶體不再...

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 標頭檔案 include 或 include 注意 alloc.h 與 malloc.h 的內容是完全一致的。功能 分配長度為num bytes位元組的記憶體塊 說明 如果分配成功則返回指向被分配記憶體的指標,...