#include#include#include "malloc.h"
#include#includeusing namespace std;
#define block_size 32
typedef struct s_block *t_block;
s_block *first_block=null;
struct s_block//控制塊
;t_block seek_block(t_block *last, size_t size)//找乙個滿足要求的塊
else
}return b;
}t_block expand_heap(t_block last, size_t s)//開新的空間
b->free = 0;
return b;
}void fenge_block(t_block b, size_t s)
//整合前面的函式 實現乙個malloc功能:
void *mmalloc(size_t size)
else//沒找到就去開闢新的空間
}else//以前沒申請過空間
t_block hebing(t_block b)//某個空間不用的時候,看前後有沒有空閒空間,有的話就合在一起
if(b->prev&&b->prev->free)
return b;
}void mfree(void *p)
c語言中calloc函式和malloc函式
1 void calloc unsigned int num,unsigned int size 記憶體的動態儲存區中分配num個長度為size的連續空間,返回所分配的記憶體空間的首位址 如果分配失敗,返回null。2 void malloc unsigned int size 動態分配記憶體 si...
malloc實現原理
malloc 是c語言中動態儲存管理 的一組標準庫函式之一。其作用是在記憶體的動態儲存區中分配乙個長度為size的連續空間。其引數是乙個無符號整形數,返回值 是乙個指向所分配的連續儲存域的起始位址的指標。動態記憶體分配 就 是指在程式執行的過程中動態地分配或者 儲存空間的分配記憶體的方法。動態記憶體...
malloc底層實現
1.結論 2.背景 3.分配原理 4.具體情況 1 malloc 小於128k的記憶體時,使用brk系統呼叫在堆上申請記憶體 2 malloc 大於128k的記憶體時,使用mmap系統呼叫在棧與堆之間的對映區分配記憶體 1.結論 1 當開闢的空間小於 128k 時,呼叫 brk 函式,malloc ...