/** * @file malloc_internal.h * @brief Internal data structures and macros for the ft_malloc allocator. */ #ifndef MALLOC_INTERNAL_H #define MALLOC_INTERNAL_H #include #define TINY_MAX 128 #define SMALL_MAX 1024 #define ALIGNMENT 16 /* Round x up to the nearest multiple of ALIGNMENT. */ #define ALIGN(x) (((x) + (ALIGNMENT - 1)) & ~(ALIGNMENT - 1)) #define MIN_ALLOC_COUNT 100 /* Header embedded before each allocation block inside a zone. */ typedef struct s_chunk { size_t size; struct s_chunk *next; int is_free; } t_chunk; /* Header at the start of each mmap'd region. */ typedef struct s_zone { struct s_zone *next; size_t size; } t_zone; /* Global state: one linked list per zone category. */ typedef struct s_heap { t_zone *tiny; t_zone *small; t_zone *large; } t_heap; extern t_heap g_heap; t_zone *zone_new (size_t alloc_max); #endif