char *i_malloc(size)
int size;
char *i_calloc(elemsize,nbelem)
int elemsize, nbelem;
char *i_realloc(ptr,newsize)
char *ptr;
int newsize;
char *i_Free(pptr)
char **pptr;
i_alloc_debug(idbg)
int idbg;
i_alloc_info(f)
FILE *f;
extern int inr_dballoc;
extern int inr_nbmalloc, inr_nbcalloc, inr_nbrealloc, inr_nbfree;
extern int inr_totsize, inr_currsize, inr_maxsize;
i_Free appelle free(*pptr), et met 0 dans *pptr, afin d'éviter une réutilisation intempestive du pointeur. On notera bien que l'argument pptr est l'adresse du pointeur renvoyé par le programme d'allocation.
En mode debug et si la variable globale debug_ à 1 (option -D des commandes), ces programmes donnent différentes informations sur stderr.
i_alloc_debug active ou désactive le mode debug selon que l'argument idbg vaut 1 ou 0 (met la variable inr_dballoc à 1 ou 0).
i_alloc_info donne, sur la sortie définie par l'argument f, les informations accumulées en mode debug, par exemple le nombre total d'appel aux fonctions malloc, calloc, realloc, free.
inr_dballoc
définit le mode debug de ces programmes. Si inr_dballoc est non nul,
ce qui est le cas par défaut, on calculera une certain nombre
de statistiques dans les variables décrites ci-dessous.
Cette variable est automatiquement mise à 1 si le programme est lancé
avec l'option -D (par kdopts_ : voir igetopt(3i)
).
inr_nbmalloc, inr_nbcalloc, inr_nbrealloc, inr_nbfree
contiennent le nombre d'appels de chacune des fonctions.
inr_totsize
contient la somme des paramètres de taille des fonctions d'allocation,
ce qui ne donne pas une indication très sérieuse dans le cas de i_realloc.
inr_currsize
donne la mémoire effectivement utilisée à un instant donné.
Cette taille est mise à jour aussi lors des appels à i_Free.
Elle tient compte de ce qui est demandé par l'utilisateur et de ce qui
est utilisé à des fins de gestion par la bibliothèque C.
inr_maxsize
est le maximum atteint par inr_currsize.