// mymalloc.h — asignador first fit sobre una arena estática.
#ifndef MYMALLOC_H
#define MYMALLOC_H

#include <stddef.h>

#define ARENA_SIZE 512  // bytes de la arena (el "heap")
#define ALIGN      16   // toda petición se redondea a múltiplo de 16

void  mm_init(int coalesce);  // coalesce = 0 desactiva la fusión
void *mm_malloc(size_t size);
void  mm_free(void *ptr);
int   mm_valid(void *ptr);    // ¿ptr tiene un encabezado válido?
void  mm_dump(void);          // imprime la lista libre

// Para las pruebas: recorrer la lista libre.
size_t mm_free_chunks(void);  // cuántos trozos libres hay
size_t mm_free_largest(void); // tamaño del trozo libre más grande
size_t mm_offset(void *ptr);  // desplazamiento de ptr dentro de la arena

#endif
