From 4482024705edbed78656f476a83b03679aa5b60f Mon Sep 17 00:00:00 2001 From: Jack Halford Date: Thu, 16 Feb 2017 19:32:00 +0100 Subject: [PATCH] free fixes, gonna do large memory zones next --- malloc/.gitignore | 2 ++ malloc/includes/malloc.h | 2 +- malloc/libft_malloc_x86_64_Darwin.so | Bin 11536 -> 11536 bytes malloc/main.c | 10 +++++----- malloc/myprogram | Bin 8640 -> 0 bytes malloc/src/malloc.c | 10 +++++++--- 6 files changed, 15 insertions(+), 9 deletions(-) create mode 100644 malloc/.gitignore delete mode 100755 malloc/myprogram diff --git a/malloc/.gitignore b/malloc/.gitignore new file mode 100644 index 00000000..0b2c88d2 --- /dev/null +++ b/malloc/.gitignore @@ -0,0 +1,2 @@ +myprogram +*.o diff --git a/malloc/includes/malloc.h b/malloc/includes/malloc.h index b9725805..71aa48e8 100644 --- a/malloc/includes/malloc.h +++ b/malloc/includes/malloc.h @@ -2,7 +2,7 @@ # define MALLOC_H # define malloc_n 64 -# define malloc_m 512 +# define malloc_m 1024 # define malloc_N (1 * getpagesize()) # define malloc_M (2 * getpagesize()) # define malloc_magic 1234567 diff --git a/malloc/libft_malloc_x86_64_Darwin.so b/malloc/libft_malloc_x86_64_Darwin.so index 4ef82e3d186d33d4081c0591a29e2189523e1ec6..0242ce5390bca4fb078a8b8a0533225f013ad45a 100755 GIT binary patch delta 1656 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 M*YMR(@Qy|L7sb|Cp8x;= diff --git a/malloc/src/malloc.c b/malloc/src/malloc.c index 58311c28..b89c8b73 100644 --- a/malloc/src/malloc.c +++ b/malloc/src/malloc.c @@ -7,18 +7,22 @@ t_node *small_alloc = NULL; t_node **find_node(t_node **node, size_t size) { - while (*node && (size_t)(*node)->size < sizeof(t_node) + size) + while (*node && (size_t)(*node)->size < size + HEADER_SIZE) node = &(*node)->next; return (node); } void add_chunk(t_node **node_ref, size_t size) { + size_t chunk_size; + while (*node_ref) node_ref = &(*node_ref)->next; - *node_ref = mmap(NULL, malloc_N, PROT_READ|PROT_WRITE, + chunk_size = TINY(size) ? malloc_N : malloc_M; + printf("chunk_size=[%zu]\n", chunk_size); + *node_ref = mmap(NULL, (chunk_size +1) * 8, PROT_READ|PROT_WRITE, MAP_ANON|MAP_PRIVATE, -1, 0); - (*node_ref)->size = TINY(size) ? malloc_N : malloc_M; + (*node_ref)->size = chunk_size; (*node_ref)->next = NULL; }