diff --git a/main.c b/main.c index 49cb951..9626a7b 100644 --- a/main.c +++ b/main.c @@ -6,7 +6,7 @@ int main(int argc, char **argv) { int **arr = (int **)malloc(atoi(argv[2]) * sizeof(int *)); size_t size; for (int i = 0; i < atoi(argv[2]); i++) { - size = (rand() & 0x7ff) | 0xf00000; + size = (rand() & 0x7ff) | 0xf000; arr[i] = (int *)malloc(size * sizeof(int)); ft_printf ("arr %d addr: %p arr size: %d\n", i, arr[i], size); //free(arr); diff --git a/src/malloc.c b/src/malloc.c index fafb997..85fa725 100644 --- a/src/malloc.c +++ b/src/malloc.c @@ -1,9 +1,14 @@ #include "malloc.h" -t_zone *create_new_tiny_zone(void) { +t_zone *create_new_zone(size_t size) { t_zone *zone; + + zone = (t_zone *)mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); // TODO protect mmap - zone = (t_zone *)mmap(NULL, g_zones.tiny_zone_size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); + // somthing like + // if (zone = MAP_FAILED) + // return NULL; + // zone->head = NULL; zone->next = NULL; return zone; @@ -59,7 +64,7 @@ void *malloc_tiny(size_t size) { return (void *)((char *)curr + sizeof(t_block)); } if (zone->next == NULL) { - zone->next = create_new_tiny_zone(); + zone->next = create_new_zone(g_zones.tiny_zone_size); } zone = zone->next; } @@ -68,15 +73,6 @@ void *malloc_tiny(size_t size) { return NULL; } -t_zone *create_new_small_zone(void) { - t_zone *zone; - // TODO protect mmap - zone = (t_zone *)mmap(NULL, g_zones.small_zone_size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); - zone->head = NULL; - zone->next = NULL; - return zone; -} - void *malloc_small(size_t size) { t_zone *zone = g_zones.small_zones; @@ -127,7 +123,7 @@ void *malloc_small(size_t size) { return (void *)((char *)curr + sizeof(t_block)); } if (zone->next == NULL) { - zone->next = create_new_small_zone(); + zone->next = create_new_zone(g_zones.small_zone_size); } zone = zone->next; }