Outils pour utilisateurs

Outils du site


prog:gnu:libc

malloc

Les statistiques de malloc peuvent être lues via la commande mallinfo (include malloc.h).

Sur la base du test suivant :

mallinfo.c
#include <malloc.h>
#include <stdio.h>
 
int main()
{
  struct mallinfo mli = mallinfo();
 
  for (int i = 0; i < 1; i++)
  {
    (void)malloc(57);
  }
 
  struct mallinfo mli2 = mallinfo();
 
  printf("%zu %zu %zu\n", mli.arena, mli.uordblks, mli.fordblks);
 
  printf("%zu %zu %zu\n", mli2.arena, mli2.uordblks, mli2.fordblks);
}

J'ai constaté que l'espace pris dans uordblks suit une forme 32+16*i. Donc chaque malloc prend au minimum 32 octets. Et parmi ces 32+16*i octets, il y en a 8 qui sont réservés par la libc.

Un article beaucoup plus complet sur le fonctionnement du malloc de la libc. Understanding glibc malloc Archive du 10/02/2015 le 28/04/2020 malloc.c arena.c

prog/gnu/libc.txt · Dernière modification : 2020/04/28 22:29 de root