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