alloca(3) Library Functions Manual alloca(3) NOM alloca - Allouer de la memoire a liberer automatiquement BIBLIOTHEQUE Bibliotheque C standard (libc, -lc) SYNOPSIS #include 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 RENVOYEE 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. ATTRIBUTS Pour une explication des termes utilises dans cette section, consulter attributes(7). +---------------------------------+--------------------------+---------+ |Interface | Attribut | Valeur | +---------------------------------+--------------------------+---------+ |alloca() | Securite des threads | MT-Safe | +---------------------------------+--------------------------+---------+ STANDARDS Aucun. HISTORIQUE PWB, 32V. NOTES La fonction alloca() depend de la machine et du compilateur. Comme elle est allouee a partir de la pile, elle est plus rapide que 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). L'espace alloue par alloca() n'est pas desalloue automatiquement si le pointeur y faisant reference devient seulement hors de portee. N'essayez pas de liberer l'espace alloue par alloca() a l'aide de la fonction free(3) ! Par necessite, alloca() est une fonction interne au compilateur, connue aussi sous le nom de __builtin_alloca(). Par defaut, les compilateurs modernes traduisent de facon automatique toutes les utilisations de alloca() en interne, mais cela n'est pas permis si une conformite aux standards est requise (-ansi, -std=c*), auquel cas est requis, au cas ou une dependance de symbole serait emise. 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 bibliotheque differente. Les tableaux de taille variable (VLA) font partie du standard C99, facultatifs depuis C11, et peuvent etre utilises dans un but similaire. Neanmoins, ils ne sont par portables en C++ standard, et etant variables, ils fonctionnent dans leur perimetre de bloc et n'ont pas d'interface de type allocateur, ce qui les rend inadaptes a l'implementation de fonctionnalites comme strdupa(3). BOGUES Du fait de la nature de la pile, il est impossible de verifier si l'allocation peut deborder de l'espace disponible et par consequent rien n'indique une erreur (cependant, le programme recevra probablement un signal SIGSEGV s'il essaye d'acceder a l'espace non disponible). 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) TRADUCTION La traduction francaise de cette page de manuel a ete creee par Christophe Blaess , Stephan Rafin , Thierry Vignaud , Francois Micaux, Alain Portal , Jean-Philippe Guerard , Jean-Luc Coulon (f5ibh) , Julien Cristau , Thomas Huriaux , Nicolas Francois , Florentin Duneau , Simon Paillard , Denis Barbier , David Prevot , Gregoire Scano et Jean- Pierre Giraud Cette traduction est une documentation libre ; veuillez vous reporter a la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITE LEGALE. Si vous decouvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message a . Pages du manuel de Linux 6.06 31 octobre 2023 alloca(3)