diff --git a/alloc.c b/alloc.c index 931b9fd59da6368f6a48cfa9f681133f918b162b..429f2ce5ed3c55f9fbfe833188d118ccd0f4eb6a 100644 --- a/alloc.c +++ b/alloc.c @@ -1 +1,37 @@ #include "alloc.h" +#include <stdio.h> + + +void *make_malloc(size_t size){ + + if(!start){ + if((start=sbrk(0))){ // break + end=start; + find=-1; + } + else + printf("break address call error"); + } + + if((find == -1) || (find->next==NULL)){ + k_malloc = end; + + if(sbrk(size)==-1) + return 0; + + k_malloc->next=NULL; + k_malloc->free=0; + k_malloc->size=size; + k_malloc->prev=find; + + end += size; + + if(find!=-1) + find->next=k_malloc; + + find=k_malloc; + } + + return find->offset; +} +