Provided by: manpages-fr-dev_3.27fr1.4-1_all bug

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