malloc函式介紹

2021-08-11 01:53:29 字數 1113 閱讀 1204

**

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

標頭檔案:#include 或 #include (注意:alloc.h 與 malloc.h 的內容是完全一致的。)

功能:分配長度為num_bytes位元組的記憶體塊

說明:如果分配成功則返回指向被分配記憶體的指標,否則返回空指標null。

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

使用:int*p;

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

//分配128個(可根據實際需要替換該數值)整型儲存單元,

//並將這128個連續的整型儲存單元的首位址儲存到指標變數p中

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

//分配12個double型儲存單元,

//並將首位址儲存到指標變數pd中

注意:malloc 函式返回的是 void * 型別,如果你寫成:p = malloc (sizeof(int)); 則程式無法通過編譯,報錯:「不能將 void* 賦值給 int * 型別變數」。所以必須通過 (int *) 來將強制轉換。

函式的實參為 sizeof(int) ,用於指明乙個整型資料需要的大小。如果你寫成:int* p = (int *) malloc (1);

**也能通過編譯,但事實上只分配了1個位元組大小的記憶體空間,當你往裡頭存入乙個整數,就會有3個位元組無家可歸,而直接「住進鄰居家」!造成的結果是後面的記憶體中原有資料內容全部被清空。

函式malloc 和calloc 介紹

函式malloc 和calloc 都可以用來動態分配記憶體空間,但兩者稍有區別。malloc 函式有乙個引數,即要分配的記憶體空間的大小 void malloc size t size calloc 函式有兩個引數,分別為元素的數目和每個元素的大小,這兩個引數的乘積就是要分配的記憶體空間的大小。vo...

關於malloc函式

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

malloc函式用法

void malloc int size 說明 malloc向系統申請分配size位元組的記憶體空間,返回型別為void 型別。int p p int malloc sizeof int 注意 1 因為malloc返回的是不確定型別的指標,所以返回之前必須經過型別強制轉換,否則編譯報錯,如 不能將v...