Les statistiques de malloc peuvent être lues via la commande mallinfo
(include malloc.h
).
Sur la base du test suivant :
#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