dwww Home | Manual pages | Find package

posix_memalign(3)          Library Functions Manual          posix_memalign(3)

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

BIBLIOTHÈQUE
       Bibliothèque C standard (libc, -lc)

SYNOPSIS
       #include <stdlib.h>

       int posix_memalign(void **memptr, size_t alignement, size_t taille);
       void *aligned_alloc(size_t alignement, size_t taille);
       void *valloc(size_t taille);

       #include <malloc.h>

       void *memalign(size_t alignement, size_t taille);
       void *pvalloc(size_t taille);

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

       posix_memalign() :
           _POSIX_C_SOURCE >= 200112L

       aligned_alloc() :
           _ISOC11_SOURCE

       valloc() :
           Since glibc 2.12:
               (_XOPEN_SOURCE >= 500) && !(_POSIX_C_SOURCE >= 200112L)
                   || /* glibc >= 2.19: */ _DEFAULT_SOURCE
                   || /* glibc <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE
           Before glibc 2.12:
               _BSD_SOURCE || _XOPEN_SOURCE >= 500

DESCRIPTION
       La fonction posix_memalign() alloue taille 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 alignement, qui doit lui-même être une puissance de deux et
       un multiple de sizeof(void *). Cette adresse peut être plus tard passée
       à  free(3).  Si  taille  vaut  0, alors la valeur dans *memptr est soit
       NULL, soit une valeur de pointeur unique.

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

       La fonction aligned_alloc() est  identique  à  memalign()  excepté  que
       taille doit être un multiple de alignement.

       La  fonction obsolète valloc() alloue taille octets et renvoie un poin-
       teur vers la mémoire allouée. L'adresse mémoire est alors  un  multiple
       de  la  taille  de page. Cette fonction est équivalente à memalign(sys-
       conf(_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  poin-
       teur sur la mémoire allouée si elles réussissent. En cas d'erreur, NULL
       est renvoyé et errno indique la cause de l'erreur.

       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 va-
       leur de errno n'est pas modifiée. Sur Linux (et d'autres systèmes), po-
       six_memalign() ne modifie pas memptr en cas d'erreur. Une exigence nor-
       malisant ce comportement a été ajoutée dans POSIX.1-2008 TC2.

ERREURS
       EINVAL Le paramètre alignement 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 depuis
       la version 2.0 de la glibc.

       The function aligned_alloc()  was added in glibc 2.16.

       La fonction posix_memalign() est disponible depuis la version 2.1.91 de
       la glibc.

ATTRIBUTS
       Pour  une explication des termes utilisés dans cette section, consulter
       attributes(7).

       ┌──────────────────────────────┬──────────────────────┬────────────────┐
       │InterfaceAttributValeur         │
       ├──────────────────────────────┼──────────────────────┼────────────────┤
       │aligned_alloc(), memalign(),  │ Sécurité des threads │ MT-Safe        │
       │posix_memalign()              │                      │                │
       ├──────────────────────────────┼──────────────────────┼────────────────┤
       │valloc(), pvalloc()           │ Sécurité des threads │ MT-Unsafe init │
       └──────────────────────────────┴──────────────────────┴────────────────┘

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

       La fonction pvalloc() est une extension GNU.

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

       La fonction posix_memalign() provient de POSIX.1d et est spécifiée dans
       POSIX.1-2001 et POSIX.1-2008.

       La fonction aligned_alloc() est spécifiée dans la norme C11.

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

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

       According to SUSv2, valloc()  is declared in <stdlib.h>. glibc declares
       it in <malloc.h>, and also in <stdlib.h> if suitable feature  test  ma-
       cros are defined (see above).

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    path-
       conf(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 que l'alignement répond bien aux exigences dé-
       taillées  ci-dessus. memalign() est susceptible de ne pas contrôler que
       le paramètre alignement soit correct.

       La norme POSIX impose que la mémoire obtenue par un appel à posix_mema-
       lign()  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  qu'on peut seulement passer comme paramètre à free(3)
       un pointeur obtenu à l’aide de malloc(3), alors que, par exemple, mema-
       lign() pourrait appeler malloc(3) et aligner par la suite la valeur ob-
       tenue). L'implémentation de la glibc permet de libérer la mémoire obte-
       nue par n'importe laquelle de ces fonctions par un appel à free(3).

       L'implémentation 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)

TRADUCTION
       La  traduction française de cette page de manuel a été créée par Chris-
       tophe Blaess <https://www.blaess.fr/christophe/>, Stéphan  Rafin  <ste-
       phan.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.cou-
       lon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>,  Thomas  Huriaux
       <thomas.huriaux@gmail.com>,  Nicolas François <nicolas.francois@centra-
       liens.net>, Florentin Duneau <fduneau@gmail.com>, Simon  Paillard  <si-
       mon.paillard@resel.enst-bretagne.fr>,    Denis   Barbier   <barbier@de-
       bian.org>, David Prévot <david@tilapin.org>  et  Grégoire  Scano  <gre-
       goire.scano@malloc.fr>

       Cette traduction est une documentation libre ; veuillez vous reporter à
       la       GNU       General       Public        License        version 3
       ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩  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⟩.

Pages du manuel de Linux 6.03   5 février 2023               posix_memalign(3)

Generated by dwww version 1.15 on Sat Jun 29 00:26:52 CEST 2024.