Provided by: manpages-fr-dev_3.57d1p1-1_all bug

NOM

       alloca - Allouer de la mémoire à libérer 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 libéré lors du retour de la fonction ayant invoqué alloca().

VALEUR RENVOYÉE

       La fonction alloca() renvoie un pointeur sur le début de la zone allouée. Si  l'allocation
       provoque un dépassement de la pile, le comportement du programme est indéterminé.

ATTRIBUTS

   Multithreading (voir pthreads(7))
       La fonction alloca() est sûre dans un contexte multithread.

CONFORMITÉ

       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 décrivant dans BSD 4.3. Linux utilise la version GNU.

NOTES

       La fonction alloca() dépend de la machine et du compilateur. Pour certaines  applications,
       son  utilisation  peut  améliorer l'efficacité en comparaison à malloc(3) et free(3). Dans
       certains cas, elle peut aussi simplifier la libération de la mémoire dans les applications
       qui utilisent longjmp(3) ou siglongjmp(3). Sinon, son utilisation est déconseillée.

       Parce  que  l'espace  alloué  par  alloca() est alloué sur la pile, il est automatiquement
       libéré si le retour de la fonction est sauté avec un appel à longjmp(3) ou siglongjmp(3).

       N'essayez pas de libérer l'espace alloué par alloca() à l'aide de la fonction free(3) !

   Notes à propos des versions GNU
       En général, 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 -std=c11 est fournie et si le
       fichier d'en-tête <alloca.h> n'est pas inclus. Dans le cas contraire (sans l'option  -ansi
       ou -std=c*), avec la glibc, <stdlib.h> inclut <alloca.h> qui contient les lignes :

           #ifdef  __GNUC__
           #define alloca(size)   __builtin_alloca (size)
           #endif

       avec  toutes les conséquences fâcheuses que cela entraîne si on a une fonction personnelle
       de ce nom.

       Le fait que le code soit développé « inline » signifie qu'il  est  impossible  de  prendre
       l'adresse  de  la  fonction  ou  de changer son comportement en utilisant une bibliothèque
       différente.

       Le code « inline » consiste souvent en une seule instruction qui  ajuste  le  pointeur  de
       pile  et  ne  vérifie  pas le débordement 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  être  étendue
       (cependant,  après  un  échec  d'allocation,  le  programme recevra probablement un signal
       SIGSEGV s'il essaye d'accéder à l'espace non alloué).

       Sur beaucoup de systèmes alloca() ne doit pas être  utilisée  au  sein  de  la  liste  des
       arguments  d'un appel de fonction, car l'espace de pile réservé par alloca() se trouverait
       alors au milieu de l'espace utilisé par les arguments de la fonction.

VOIR AUSSI

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

COLOPHON

       Cette page fait partie de la publication 3.57 du projet man-pages Linux.  Une  description
       du  projet  et  des  instructions  pour  signaler  des  anomalies  peuvent être trouvées à
       l'adresse http://www.kernel.org/doc/man-pages/.

TRADUCTION

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

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

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

       Vous pouvez toujours avoir accès à la version anglaise de  ce  document  en  utilisant  la
       commande « man -L C <section> <page_de_man> ».