Provided by: manpages-fr-dev_3.32d0.2p4-1_all bug

NOM

       malloc,  free, calloc, realloc - Allocation et liberation dynamiques de
       memoire

SYNOPSIS

       #include <stdlib.h>

       void *malloc(size_t size);
       void free(void *ptr);
       void *realloc(void *ptr, size_t size);
       void *calloc(size_t nmemb, size_t size);

DESCRIPTION

       La fonction malloc() alloue size octets, et renvoie un pointeur sur  la
       memoire allouee. Le contenu de la zone de m'emoire n'est pas initialis'e.
       Si size est nulle, malloc renvoie soit NULL ou un unique  pointeur  qui
       pourra etre passe ulterieurement a free() avec succes.

       La  fonction  free()  libere l'espace memoire pointe par ptr, qui a ete
       obtenu lors d'un appel anterieur a malloc(), calloc() ou realloc().  Si
       le  pointeur  ptr  n'a pas ete obtenu par l'un de ces appels, ou s'il a
       deja ete libere avec free(ptr), le comportement est indetermine. Si ptr
       est NULL, aucune operation n'est effectuee.

       La  fonction  calloc()  alloue la memoire necessaire pour un tableau de
       nmemb elements de size octets, et renvoie un pointeur vers  la  memoire
       allouee. Cette zone est remplie avec des zeros. Si nmemb ou si size est
       nulle, calloc renvoie soit NULL ou un unique pointeur qui  pourra  etre
       passe ulterieurement a free() avec succes.

       La  fonction  realloc() modifie la taille du bloc de memoire pointe par
       ptr a la taille de size octets. Le contenu de la memoire entre la  zone
       de  depart  et  la  plus  petite taille entre la nouvelle et l'ancienne
       taille n'est pas modifie. Si la nouvelle taille  est  plus  grande  que
       l'ancienne  taille,  le  contenu  de  la  zone  de memoire nouvellement
       allouee n'est pas initialise. Si ptr est NULL, l'appel est equivalent a
       malloc(size),  pour toute valeur de size ; si size vaut zero et ptr est
       non NULL, l'appel est equivalent a free(ptr). Si ptr est NULL, il  doit
       avoir  ete  obtenu  par  un  appel  anterieur  a  malloc(), calloc() ou
       realloc().  Si  la  zone  pointee  etait  deplacee,  un  free(ptr)  est
       effectue.

VALEUR RENVOY'EE

       Les  fonctions  malloc()  et  calloc()  renvoient  un  pointeur vers la
       memoire allouee, qui est correctement alignee pour n'importe quel  type
       de  variable.  Si  elles  echouent,  elles  renvoient  NULL.  NULL peut
       egalement etre renvoye par un appel reussi a malloc() avec un parametre
       size egal a zero, ou par un appel reussi de calloc() avec nmemb ou size
       egal a zero.

       La fonction free() ne renvoie pas de valeur.

       La fonction realloc() renvoie un pointeur sur la  memoire  nouvellement
       allouee,  qui  est  correctement  alignee  pour  n'importe quel type de
       variable, et qui peut etre different de ptr,  ou  NULL  si  la  demande
       echoue.  Si  size  vaut  zero,  realloc  renvoie  NULL  ou  un pointeur
       acceptable pour free(). Si realloc() echoue, le bloc  memoire  original
       reste intact, il n'est ni libere ni deplace.

CONFORMIT'E

       C89, C99.

NOTES

       Par  defaut,  Linux  suit  une  strategie  d'allocation optimiste. Ceci
       signifie que lorsque malloc() renvoie une valeur non  NULL,  il  n'y  a
       aucune  garantie  que la memoire soit veritablement disponible. Dans le
       cas ou le systeme manque de memoire, un ou plusieurs  processus  seront
       tues par l'infame << OOM killer >> (gestionnaire de memoire). Pour plus
       d'informations,        consultez        la        description        de
       /proc/sys/vm/overcommit_memory  et  /proc/sys/vm/oom_adj  dans proc(5),
       ainsi que le fichier Documentation/vm/overcommit-accounting des sources
       du noyau.

       En  general,  malloc()  alloue  la  memoire depuis le tas, et ajuste la
       taille du tas en consequence  avec  sbrk(2).  Lorsque  les  bloques  de
       memoire   alloues   sont   plus   larges   que  MMAP_THRESHOLD  octets,
       l'implementation de la glibc de  malloc  alloue  la  memoire  selon  un
       projection  anonyme privee avec mmap(2). MMAP_THRESHOLD vaut 128 Ko par
       defaut et il est ajustable avec mallopt(3). Les  allocations  realisees
       avec  mmap(2)  ne  sont  pas  affectees  par la limitation de ressource
       RLIMIT_DATA (consultez getrlimit(2)).

       Le standard UNIX 98  necessite  que  malloc(),  calloc()  et  realloc()
       positionnent  errno  a ENOMEM en cas d'echec. La glibc suppose qu'il en
       est ainsi (et les versions glibc de ces  routines  le  font).  Si  vous
       utilisez une implementation personnelle de malloc qui ne positionne pas
       errno, certaines routines de bibliotheques peuvent echouer sans  donner
       de raison dans errno.

       Lorsqu'un  programme  echoue  durant  un  appel  a  malloc(), calloc(),
       realloc()  ou  free(),  ceci  est  presque  toujours  le  signe   d'une
       corruption  du  tas.  Ceci  survient generalement en cas de debordement
       d'un bloc memoire alloue, ou en liberant deux fois le meme pointeur.

       Les versions recentes de la bibliotheque libc de Linux (posterieures  a
       5.4.23)  et de la bibliotheque glibc 2.x incluent une implementation de
       malloc() dont on peut configurer le comportement a l'aide de  variables
       d'environnement.  Quand  la variable MALLOC_CHECK_ existe, les appels a
       malloc() emploient une implementation speciale  (moins  efficace)  mais
       plus tolerante a l'encontre des bogues simples, comme le double appel a
       free() avec le meme argument, ou lors d'un debordement de  tampon  d'un
       seul octet (bogues de surpassement d'une unite, ou oubli d'un caractere
       nul final d'une chaine). Il n'est toutefois pas possible de se proteger
       contre toutes les erreurs de ce type, et l'on risque de voir des fuites
       de memoire se produire. Si la variable MALLOC_CHECK_ vaut zero,  toutes
       les corruptions du tas detectees sont ignorees silencieusement. Si elle
       vaut 1, un message de diagnostic est affiche sur stderr. Si  elle  vaut
       2,  la  fonction abort(3) est appelee immediatement. Si elle vaut 3, un
       message de diagnostic est  affiche  sur  stderr  et  le  programme  est
       arrete.  L'utilisation des valeurs non nulle de MALLOC_CHECK_ peut etre
       utile car un crash pourrait se produire ulterieurement,  et  il  serait
       tres difficile de trouver la cause du probleme.

VOIR AUSSI

       brk(2), mallopt(3), mmap(2), alloca(3), posix_memalign(3)

COLOPHON

       Cette  page  fait  partie  de  la  publication 3.32 du projet man-pages
       Linux. Une description du projet et des instructions pour signaler  des
       anomalies       peuvent       etre       trouvees      a      l'adresse
       <URL:http://www.kernel.org/doc/man-pages/>.

TRADUCTION

       Depuis 2010, cette traduction est maintenue a l'aide  de  l'outil  po4a
       <URL:http://po4a.alioth.debian.org/>   par   l'equipe   de   traduction
       francophone       au       sein        du        projet        perkamon
       <URL:http://perkamon.alioth.debian.org/>.

       Christophe  Blaess  <URL:http://www.blaess.fr/christophe/> (1996-2003),
       Alain Portal <URL:http://manpagesfr.free.fr/>  (2003-2006).   Florentin
       Duneau et l'equipe francophone de traduction de Debian (2006-2009).

       Veuillez   signaler   toute   erreur   de   traduction  en  ecrivant  a
       <debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
       paquet manpages-fr.

       Vous  pouvez  toujours avoir acces a la version anglaise de ce document
       en utilisant la commande << man -L C <section> <page_de_man> >>.