Linux下實現malloc函式

2021-10-03 08:46:23 字數 742 閱讀 3375

#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 ...