Provided by: manpages-fr-dev_3.27fr1.4-1_all bug

NOM

       alloca - Allouer de la memoire a liberer automatiquement

SYNOPSIS

       #include <alloca.h>

       void *alloca(size_t size);

DESCRIPTION

       La fonction alloca() alloue size octets dans la pile de l'appelant. Cet
       espace temporaire est automatiquement  libere  lors  du  retour  de  la
       fonction ayant invoque alloca().

VALEUR RENVOY'EE

       La  fonction  alloca()  renvoie  un  pointeur  sur  le debut de la zone
       allouee. Si  l'allocation  provoque  un  depassement  de  la  pile,  le
       comportement du programme est indetermine.

CONFORMIT'E

       Cette fonction n'est pas dans POSIX.1-2001.

       Il  semble  que  alloca()  soit apparue dans 32V, PWB, PWB.2, BSD 3, et
       BSD 4. Il existe une page de manuel la decrivant  dans  BSD 4.3.  Linux
       utilise la version GNU.

NOTES

       La  fonction  alloca()  depend  de  la  machine et du compilateur. Pour
       certaines applications, son utilisation peut ameliorer l'efficacite  en
       comparaison  a malloc(3) et free(3). Dans certains cas, elle peut aussi
       simplifier la liberation  de  la  memoire  dans  les  applications  qui
       utilisent  longjmp(3)  ou  siglongjmp(3).  Sinon,  son  utilisation est
       deconseillee.

       Parce que l'espace alloue par alloca() est alloue sur la pile,  il  est
       automatiquement  libere  si  le retour de la fonction est saute avec un
       appel a longjmp(3) ou siglongjmp(3).

       N'essayez pas de liberer l'espace alloue par alloca() a  l'aide  de  la
       fonction free(3) !

   Notes `a propos des versions GNU
       En   general,   gcc(1)   traduit   l'appel  de  alloca()  par  du  code
       << inline >>. Ceci n'est  pas  le  cas  si  l'option  -ansi,  -std=c89,
       -std=c99  ou l'option -fno-builtin est fournie (et le fichier d'en-tete
       <alloca.h> n'est pas inclus. Attention,  par  defaut,  avec  la  glibc,
       <stdlib.h> inclut <alloca.h> qui contient la ligne :

           #define alloca(size)   __builtin_alloca (size)

       avec  toutes  les  consequences facheuses que cela entraine si on a une
       fonction personnelle de ce nom.

       Le fait que le code soit  developpe  << inline >>  signifie  qu'il  est
       impossible  de  prendre  l'adresse  de  la  fonction  ou de changer son
       comportement en utilisant une bibliotheque differente.

       Le code << inline >> consiste souvent  en  une  seule  instruction  qui
       ajuste le pointeur de pile et ne verifie pas le debordement de pile. Il
       n'y a donc pas de retour d'erreur de valeur NULL.

BOGUES

       Il n'y a pas d'indication d'erreur si la trame sur la pile ne peut  pas
       etre  etendue  (cependant,  apres  un  echec d'allocation, le programme
       recevra probablement un signal SIGSEGV s'il essaye d'acceder a l'espace
       non alloue).

       Sur  beaucoup de systemes alloca() ne doit pas etre utilisee au sein de
       la liste des arguments d'un appel de fonction,  car  l'espace  de  pile
       reserve  par alloca() se trouverait alors au milieu de l'espace utilise
       par les arguments de la fonction.

VOIR AUSSI

       brk(2), longjmp(3), malloc(3)

COLOPHON

       Cette page fait partie de  la  publication  3.27  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> >>.