Provided by: manpages-fr-dev_4.19.0-7_all bug

NOM

       alloca - Allouer de la mémoire à libérer automatiquement

BIBLIOTHÈQUE

       Bibliothèque C standard (libc, -lc)

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

       Pour une explication des termes utilisés dans cette section, consulter attributes(7).

       ┌────────────────────────────────────────────────────────┬──────────────────────┬─────────┐
       │InterfaceAttributValeur  │
       ├────────────────────────────────────────────────────────┼──────────────────────┼─────────┤
       │alloca()                                                │ Sécurité des threads │ MT-Safe │
       └────────────────────────────────────────────────────────┴──────────────────────┴─────────┘

STANDARDS

       Cette fonction n'est pas dans POSIX.1.

       La fonction alloca() est issue de PWB et de 32V et est présente dans tous leurs dérivés.

NOTES

       La  fonction  alloca()  dépend  de  la machine et du compilateur. Comme elle est allouée à
       partir de la pile, elle est plus rapide que 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).

       L'espace  alloué par alloca() n'est pas désalloué automatiquement si le pointeur y faisant
       référence devient seulement hors de portée.

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

       Par nécessité, alloca() est une fonction interne au compilateur, connue aussi sous le  nom
       de   __builtin_alloca().  Par  défaut,  les  compilateurs  modernes  traduisent  de  façon
       automatique toutes les utilisations de alloca() en interne, mais cela n'est pas permis  si
       une  conformité  aux  standards  est  requise  (-ansi, -std=c*), auquel cas <alloca.h> est
       requis, au cas où une dépendance de symbole serait émise.

       Le fait que alloca() est une fonction interne signifie qu'il est impossible de prendre son
       adresse ou de changer son comportement en utilisant une bibliothèque différente.

       Les tableaux de taille variable (VLA) font partie du standard C99, facultatifs depuis C11,
       et peuvent être utilisés dans un but similaire. Néanmoins, ils ne sont  par  portables  en
       C++  standard,  et  étant variables, ils fonctionnent dans leur périmètre de bloc et n'ont
       pas d'interface de type allocateur, ce  qui  les  rend  inadaptés  à  l'implémentation  de
       fonctionnalités comme strdupa(3).

BOGUES

       Du  fait  de  la  nature  de  la  pile, il est impossible de vérifier si l'allocation peut
       déborder de l'espace disponible et par conséquent rien n'indique une erreur (cependant, le
       programme  recevra  probablement  un  signal  SIGSEGV s'il essaye d'accéder à l'espace non
       disponible).

       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)

TRADUCTION

       La traduction française de cette  page  de  manuel  a  été  créée  par  Christophe  Blaess
       <https://www.blaess.fr/christophe/>,  Stéphan  Rafin  <stephan.rafin@laposte.net>, Thierry
       Vignaud <tvignaud@mandriva.com>, François Micaux, Alain  Portal  <aportal@univ-montp2.fr>,
       Jean-Philippe    Guérard   <fevrier@tigreraye.org>,   Jean-Luc   Coulon   (f5ibh)   <jean-
       luc.coulon@wanadoo.fr>,   Julien    Cristau    <jcristau@debian.org>,    Thomas    Huriaux
       <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin
       Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>,  Denis
       Barbier   <barbier@debian.org>,   David   Prévot   <david@tilapin.org>,   Grégoire   Scano
       <gregoire.scano@malloc.fr> et Jean-Pierre Giraud <jean-pierregiraud@neuf.fr>

       Cette traduction est une documentation libre ; veuillez vous reporter  à  la  GNU  General
       Public   License   version 3  ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩  concernant  les
       conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.

       Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un
       message à ⟨debian-l10n-french@lists.debian.org⟩.