細說malloc 函式

2021-08-13 14:57:57 字數 973 閱讀 6372

一、malloc()函式是什麼

malloc()函式是乙個用來動態分配空間標準的c語言庫函式。

malloc()至少分配所需的空間大小

malloc()返回值是乙個指標,指向分配過來的空間

malloc()在分配的位址被釋放前無法再次使用這塊區域

二、malloc()在分配空間時是怎麼做的

從上圖中,我們可以看到其實malloc分配出的空間不僅僅是使用者所得到的資料空間,其實還包括了儲存所分配的當前區塊的一些詳細資訊,至少包括乙個指向下乙個區塊的指標,乙個記錄是否使用該區塊的標誌位,乙個記錄該區塊的大小的資料位,返回值為乙個pointer。當然使用者是沒法看見這些元資料的。

我們由此可以定義出乙個資料元的結構:

typedef struct s_block *t_block;
接下來就是尋找可用區塊進行空間分配,在找可用區塊時必須滿足這幾個條件:

1、空間大小要符合  2、該區塊未被使用 

t_block find_block(t_block *last , size_t size)

return (b);

}

找到空間以後如何分配,還得分兩種情況:

1、空間大小剛剛好

2、空間比所需要的大

void *malloc(size_t size) else 

} else

return(b->data);

}

void split_block(t_block b, size_t s)

分配方式大致就是空間一樣直接給,空間大了,需要分割開來。

由此可見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位元組的記憶體塊 說明 如果分配成功則返回指向被分配記憶體的指標,...