Prérequis

Hello ! o/

Vous allez comprendre ici comment les chunks dans ptmalloc2 sont faits quand ils sont dit alloués et désalloués. En réalité un chunk est l’espace mémoire qui vous est dédié lorsque vous appelez malloc(3). Un chunk est définit dans malloc.c par cette structure:

struct malloc_chunk
{
  INTERNAL_SIZE_T      mchunk_prev_size;  /* Size of previous chunk (if free).  */
  INTERNAL_SIZE_T      mchunk_size;       /* Size in bytes, including overhead. */
  struct malloc_chunk* fd;                /* double links -- used only if free. */
  struct malloc_chunk* bk;
  
  /* Only used for large blocks: pointer to next larger size.  */
  struct malloc_chunk* fd_nextsize;       /* double links -- used only if free. */
  struct malloc_chunk* bk_nextsize;
};

Alors il faut comprendre qu’un chunk au final, ça se structure avec:

FD & BK

Lorsque d’un chunk est free (libéré), il est considéré comme noeud d’une liste de chunks free: FD (Forward) pointe sur le suivant, BK (Backward) sur le précédent.

La suite ici !