Provided by:
manpages-fr-dev_3.27fr1.4-1_all 
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> >>.