Provided by: manpages-fr-dev_3.57d1p1-1_all bug

NOM

       posix_memalign, aligned_alloc, memalign, valloc, pvalloc - Allocation de mémoire alignée

SYNOPSIS

       #include <stdlib.h>

       int posix_memalign(void **memptr, size_t alignment, size_t size);
       void *aligned_alloc(size_t alignment, size_t size);
       void *valloc(size_t size);

       #include <malloc.h>

       void *memalign(size_t alignment, size_t size);
       void *pvalloc(size_t size);

   Exigences    de    macros    de   test   de   fonctionnalités   pour   la   glibc   (consultez
   feature_test_macros(7)) :

       posix_memalign() : _POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600

       aligned_alloc(): _ISOC11_SOURCE

       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
               Le fichier d'en-tête (non standard) <malloc.h> déclare également valloc() ; aucune
               macro de test de fonctionnalité n'est nécessaire.

DESCRIPTION

       La  fonction  posix_memalign() alloue size octets et place l'adresse de la mémoire allouée
       dans *memptr. L'adresse de la mémoire allouée est  un  multiple  de  alignment,  qui  doit
       lui-même  être  une  puissance  de  deux et un multiple de sizeof(void *). Si size vaut 0,
       alors la valeur dans *memptr() est soit NULL, soit une valeur de pointeur unique qui  peut
       ensuite être fournie à free(3).

       La  fonction obsolète memalign() alloue size octets et renvoie un pointeur vers la mémoire
       allouée. L'adresse mémoire est alors un multiple de alignment, qui doit être une puissance
       de deux.

       La  fonction  aligned_alloc()  est  identique  à memalign(), excepté que size doit être un
       multiple de alignment.

       La fonction obsolète valloc() alloue size octets et renvoie un pointeur  vers  la  mémoire
       allouée.  L'adresse mémoire est alors un multiple de la taille de page. Cette fonction est
       équivalente à memalign(sysconf(_SC_PAGESIZE),size).

       La fonction obsolète pvalloc() est similaire  à  valloc(),  mais  arrondit  la  taille  de
       l'allocation au multiple supérieur de la taille de page système.

       Pour toutes ces fonctions, la mémoire n'est pas initialisée à zéro.

VALEUR RENVOYÉE

       aligned_alloc(),  memalign(),  valloc()  et pvalloc() renvoient un pointeur sur la mémoire
       allouée, ou bien NULL si la requête échoue.

       posix_memalign()  renvoie  zéro  en  cas  de  succès,  ou  l'une  des  valeurs   d'erreurs
       répertoriées  dans la section suivante en cas d'échec. La valeur de errno est indéterminée
       après un appel à posix_memalign().

ERREURS

       EINVAL Le paramètre alignment n'est pas une puissance de deux, ou n'est pas un multiple de
              sizeof(void *).

       ENOMEM Mémoire insuffisante pour réaliser la demande d'allocation.

VERSIONS

       Les  fonctions  memalign(),  valloc()  et  pvalloc()  sont  disponibles  dans  toutes  les
       bibliothèques libc de Linux.

       La fonction aligned_alloc() est disponible depuis la glibc 2.16.

       La fonction posix_memalign() est disponible depuis la glibc 2.1.94.

CONFORMITÉ

       La fonction valloc() est apparue dans BSD 3.0. Elle est qualifiée d'obsolète dans BSD 4.3,
       et d'historique dans SUSv2. Elle n'apparaît pas dans POSIX.1-2001.

       La fonction pvalloc() est une extension GNU.

       La fonction memalign() est apparue dans SunOS 4.1.3 mais pas dans BSD 4.4.

       La fonction posix_memalign() provient de POSIX.1d.

       La fonction aligned_alloc() est spécifiée dans le standard C11.

   En-têtes
       Tout le monde est d'accord sur le fait que posix_memalign() est déclarée dans <stdlib.h>.

       Sur certains systèmes, memalign() est déclaré dans <stdlib.h> au lieu de <malloc.h>.

       Conformément  à SUSv2, valloc() est déclaré dans <stdlib.h>. Libc4,5 et glibc le déclarent
       dans <malloc.h> et également dans <stdlib.h> si les macros de test adéquates sont définies
       (voir au-dessus).

NOTES

       Il y a des restrictions d'alignement sur beaucoup de systèmes, par exemple sur les tampons
       utilisés pour les entrées-sorties directes des périphériques  blocs.  POSIX  spécifie  que
       l'appel  pathconf(path,_PC_REC_XFER_ALIGN) indique quel alignement est nécessaire. On peut
       à présent utiliser posix_memalign() pour satisfaire cette condition.

       posix_memalign() vérifie qu'alignment répond  bien  aux  exigences  détaillées  ci-dessus.
       memalign() est susceptible de ne pas contrôler que le paramètre alignment est correct.

       La  norme  POSIX impose que la mémoire obtenue par un appel à posix_memalign() puisse être
       libérée en utilisant free(3). Certains systèmes ne fournissent aucun moyen de  libérer  la
       mémoire  allouée  par  memalign()  ou valloc() (parce que l'on peut seulement passer comme
       paramètre à 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'implémentation de
       la glibc permet de libérer la mémoire obtenue par n'importe laquelle de ces fonctions  par
       appel à free(3).

       L'implépmentation  de la glibc de malloc(3) renvoie toujours des adresses mémoire alignées
       sur 8 octets, ainsi ces fonctions ne sont nécessaires  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.57 du projet man-pages Linux. Une description
       du projet et des  instructions  pour  signaler  des  anomalies  peuvent  être  trouvées  à
       l'adresse http://www.kernel.org/doc/man-pages/.

TRADUCTION

       Depuis    2010,    cette   traduction   est   maintenue   à   l'aide   de   l'outil   po4a
       <http://po4a.alioth.debian.org/> par l'équipe de traduction francophone au sein du  projet
       perkamon <http://perkamon.alioth.debian.org/>.

       Stéphan  Rafin  (2002), Alain Portal <http://manpagesfr.free.fr/> (2006). Nicolas François
       et l'équipe francophone de traduction de Debian (2006-2009).

       Veuillez     signaler     toute     erreur     de     traduction     en     écrivant     à
       <debian-l10n-french@lists.debian.org>   ou   par   un  rapport  de  bogue  sur  le  paquet
       manpages-fr.

       Vous pouvez toujours avoir accès à la version anglaise de  ce  document  en  utilisant  la
       commande « man -L C <section> <page_de_man> ».