tcache : pourquoi free() est devenu si rapide
Le tcache (thread local cache) est arrivé avec glibc 2.26 : structures tcache_entry et tcache_perthread_struct, indexation par taille, et pourquoi free l'atteint avant les fastbins.
Articles sur ptmalloc2.
Le tcache (thread local cache) est arrivé avec glibc 2.26 : structures tcache_entry et tcache_perthread_struct, indexation par taille, et pourquoi free l'atteint avant les fastbins.
Les quatre familles de bins ptmalloc2 : fast bins (sans fusion), unsorted bin (DCLL pour la seconde chance), small bins (moins de 512 octets) et large bins triees par classes de taille.
Structure malloc_state au coeur des arenas ptmalloc2 : mutex, fastbinsY, top chunk, last_remainder, bins et binmap. Cas particulier de la main_arena et schéma multi-threadé via heap_info.
Anatomie d'un chunk ptmalloc2 : champs mchunk_prev_size et mchunk_size, bits NON_MAIN_ARENA / IS_MMAPPED / PREV_INUSE et chainage FD/BK pour les chunks liberes.
Presentation de ptmalloc2 (pthread malloc v2), l'allocateur de heap utilise par la glibc : raison d'etre de la heap face a la stack, et plan d'attaque pour comprendre chunks, arenas, bins et tcache.