Provided by:
manpages-fr-dev_3.27fr1.4-1_all 
NOM
posix_memalign, memalign, valloc - Allocation de memoire alignee
SYNOPSIS
#include <stdlib.h>
int posix_memalign(void **memptr, size_t alignment, size_t size);
#include <malloc.h>
void *valloc(size_t size);
void *memalign(size_t boundary, size_t size);
Exigences de macros de test de fonctionnalites pour la glibc (consultez
feature_test_macros(7)) :
posix_memalign() : _POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600
valloc() :
Depuis la glibc 2.12 :
_BSD_SOURCE ||
(_XOPEN_SOURCE >= 500 ||
_XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED) &&
!(_POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600)
Avant la glibc 2.12 :
_BSD_SOURCE || _XOPEN_SOURCE >= 500 ||
_XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
DESCRIPTION
La fonction posix_memalign() alloue size octets et place l'adresse de
la memoire allouee dans *memptr. L'adresse de la memoire allouee est un
multiple de alignment, qui doit lui meme etre une puissance de deux et
un multiple de sizeof(void *). Si size vaut 0, alors posix_memalign()
renvoie soit NULL, soit une valeur de pointeur unique qui peut ensuite
etre fournie a free().
La fonction obsolete memalign() alloue size octets et renvoie un
pointeur vers la memoire allouee. L'adresse memoire est alors un
multiple de boundary, qui doit etre une puissance de deux.
La fonction obsolete valloc() alloue size octets et renvoie un pointeur
vers la memoire allouee. L'adresse memoire est alors un multiple de la
taille de page. Cette fonction est equivalente a
memalign(sysconf(_SC_PAGESIZE),size).
Pour ces trois routines, la memoire n'est pas initialisee a zero.
VALEUR RENVOY'EE
memalign() et valloc() renvoient un pointeur sur la memoire allouee, ou
bien NULL si la requete echoue.
posix_memalign() renvoie zero en cas de succes, ou l'une des valeurs
d'erreurs repertoriees dans la section suivante en cas d'echec. Notez
que errno n'est pas affectee par cette fonction.
ERREURS
EINVAL Le parametre alignment n'est pas une puissance de deux, ou n'est
pas un multiple de sizeof(void *).
ENOMEM Memoire insuffisante pour realiser la demande d'allocation.
VERSIONS
Les fonctions memalign() et valloc() sont disponibles dans toutes les
bibliotheques libc de Linux. La fonction posix_memalign() est
disponible depuis la glibc 2.1.91.
CONFORMIT'E
La fonction valloc() est apparue dans BSD 3.0. Elle est qualifiee
d'obsolete dans BSD 4.3, et d'historique dans SUSv2. Elle n'apparait
pas dans POSIX.1-2001. La fonction memalign() est apparue dans SunOS
4.1.3 mais pas dans BSD 4.4. La fonction posix_memalign() provient de
POSIX.1d.
En-t^etes
Tout le monde est d'accord sur le fait que posix_memalign() est
declaree dans <stdlib.h>.
Sur certains systemes, memalign() est declare dans <stdlib.h> au lieu
de <malloc.h>.
Conformement a SUSv2, valloc() est declare dans <stdlib.h>. Libc4,5 et
glibc le declarent dans <malloc.h> et peut-etre egalement dans
<stdlib.h> (a savoir, si _GNU_SOURCE est definie, ou _BSD_SOURCE est
definie, ou, pour glibc, si _XOPEN_SOURCE_EXTENDED est definie, ou, de
maniere equivalente, _XOPEN_SOURCE est definie a une valeur qui n'est
pas plus petite que 500).
NOTES
Il y a des restrictions d'alignement sur beaucoup de systemes, par
exemple sur les tampons utilises pour les entrees-sorties directes des
peripheriques blocs. POSIX specifie que l'appel
pathconf(path,_PC_REC_XFER_ALIGN) indique quel alignement est
necessaire. On peut a present utiliser posix_memalign() pour satisfaire
cette condition.
posix_memalign() verifie qu'alignment repond bien aux exigences
detaillees ci-dessus. memalign() est susceptible de ne pas controler
que le parametre boundary est correct.
La norme POSIX impose que la memoire obtenue par un appel a
posix_memalign() puisse etre liberee en utilisant free(3). Certains
systemes ne fournissent aucun moyen de liberer la memoire allouee par
memalign() ou valloc() (parce que l'on peut seulement passer comme
parametre a free(3) un pointeur obtenu via malloc(3), alors que, par
exemple, memalign() pourrait appeler malloc(3) et aligner par la suite
la valeur obtenue). L'implementation de la glibc permet de liberer la
memoire obtenue par n'importe laquelle de ces trois fonctions par appel
a free(3).
L'implepmentation de la glibc de malloc(3) renvoie toujours des
adresses memoire alignees sur 8 octets, ainsi ces routines ne sont
necessaires qu'en cas de besoin de valeurs d'alignement plus grandes.
VOIR AUSSI
brk(2), getpagesize(2), free(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/>.
Stephan Rafin (2002), Alain Portal
<URL:http://manpagesfr.free.fr/> (2006). Nicolas Francois 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> >>.