#include "Memory.h" #define NULL 0 typedef struct { void *a; void *next; int size; int isfree; }Malloc; struct Malloc *malloc_begin= (Malloc *) sbrk( sizeof(Malloc)); struct Malloc *New= (Malloc *) sbrk( sizeof(Malloc)); struct Malloc *b= (Malloc *) sbrk( sizeof(Malloc)); void* calloc(size_t nmemb, size_t size){ void *a=(void *)sbrk(size); void *ptr; ptr=a; while( nmemb-1 !=0){ a=(void *)sbrk(size); if(a==(void *)-1) return NULL; nmemb--; } return ptr; } void* malloc(size_t size){ if (malloc_begin->a==(void *) NULL) { New->a=(void *)sbrk(size); New->a=size; if (New->a==(void *)-1) { printf (" an error has occured") ; return NULL; } malloc_begin->a=New->a; } else{ New=malloc_begin; while ( New->next && ( New->isfree==0 && New->size== size)) New=New->next; if( New->isfree==1 && New->size ==size){ New->isfree=0; return New->a; } New->next=b; b->a=(void *)sbrk(size); b->size=size; if (b->a==(void *)-1){ printf (" an error has occured") ; return NULL;} } return b->a; } void free(void *ptr){ } void *realloc(void *ptr, size_t size){ void *a; if (ptr==0){ ptr=malloc(size); if(ptr==NULL) return NULL;} else{ if (size==0) free(ptr); else { a=malloc( sizeof(ptr)); if(a==NULL) return NULL; a=ptr; free(ptr); ptr=malloc(size); if(ptr==NULL) return NULL; ptr=a; } } return ptr; }