Man page - alloca(3)

Packages contains this manual

Available languages:

en fr pl ja ro de

Manual

alloca

NOM
BIBLIOTHÈQUE
SYNOPSIS
DESCRIPTION
VALEUR RENVOYÉE
ATTRIBUTS
STANDARDS
HISTORIQUE
NOTES
BOGUES
VOIR AUSSI
TRADUCTION

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).

Image grohtml-3871351-1.png

STANDARDS

Aucun.

HISTORIQUE

PWB, 32V.

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 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 .