IALLOC (3I)     version 4.6.9     March 2022

User Intro    Prog Intro    Liste des programmes    Liste des manuels
Table of Contents


NAME

i_calloc, i_malloc, i_realloc, i_Free, i_alloc_info, i_alloc_debug - interfaces pour allocation et libération de mémoire.

SYNOPSIS

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;

DESCRIPTION

i_malloc, i_calloc, i_realloc appellent respectivement malloc, calloc, realloc, avec les mêmes arguments, et renvoient un pointeur sur le tableau alloué en cas de succès. En cas d'erreur, ces fonctions impriment un message d'erreur et tuent le programme, par appel de imerror.

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.

EXEMPLE

char *buf;
buf = (char *)i_malloc(n);
.......
i_Free(&buf)

"SEE ALSO"

Intro(3i) , imerror(3i) , igetopt(3i) .

BUGS

Les calculs de taille effective ne sont corrects que pour les systèmes où les méthodes de gestion des allocations peuvent être devinées par le programme.

DIAGNOSTICS

Ces modules appellent imerror en cas d'erreur.