Accueil
Rechercher:
sur developpez.com sur les forums
Forums | Tutoriels | F.A.Q's | Participez | Hébergement | Contacts
Accueil Conception Java DotNET Visual Basic  C  C++ Delphi Eclipse MS-Office SQL & SGBD Oracle  4D  Business Intelligence
Club Emploi Blogs   TV   Dév. Web PHP XML Python Autres 2D-3D-Jeux Sécurité Windows Linux PC Mac
FORUM LINUX FAQ LINUX TUTORIELS LINUX LIVRES LINUX LINUX TV UNIX GTK+ Qt APACHE

POSIX_MEMALIGN

Section: Manuel du programmeur Linux (3)
Updated: 21 juillet 2003
Index


NOM
SYNOPSIS
DESCRIPTION
VALEUR RENVOYÉE
ERREURS
NOTES
HISTORIQUE
CONFORMITÉ
VOIR AUSSI
TRADUCTION

NOM

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

SYNOPSIS

#include <stdlib.h>

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

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 *).
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 boundary, qui doit être une puissance de deux.
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).
Pour ces trois routines, la mémoire n'est pas initialisée à zéro.

VALEUR RENVOYÉE

memalign() et valloc() 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. Notez que errno n'est pas affectée par cette fonction.

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.

NOTES


posix_memalign() vérifie que alignment répond bien aux exigences détaillées ci dessus. memalign() est susceptible de ne pas contrôler que le paramètre boundary est correct.
La norme POSIX impose que la mémoire obtenue par un appel à posix_memalign() puisse être libérée en utilisant free(). Certains systèmes ne fournissent aucun moyen afin de libérer la mémoire allouée par memalign() ou valloc() (parce que l'on peut seulement passer comme paramètre à free() un pointeur obtenu via malloc(), Alors que e.g. memalign() pourrait appeler malloc() et aligner par la suite la valeur obtenue). La libc GNU permet de libérer la mémoire obtenue par n'importe laquelle de ces trois fonctions par appel à free().
La version libc GNU de malloc() renvoie toujours des adresses mémoire alignées sur 8-octets, ainsi ces routines ne sont nécessaires qu'en cas de besoin de valeurs d'alignement plus grandes.

HISTORIQUE

Les fonctions memalign() et valloc() sont disponibles dans toutes les bibliothèques libc de Linux. La fonction posix_memalign() est disponible depuis la glibc 2.1.91.

CONFORMITÉ

La fonction valloc() est apparue dans BSD 3.0. Elle est qualifiée d'obsolète dans BSD 4.3, et de légende dans SUSv2. Elle n'apparaît plus dans SUSv3. La fonction memalign() est apparue dans SunOS 4.1.3 mais pas dans BSD 4.4. La fonction posix_memalign() provient de POSIX 1003.1d.

VOIR AUSSI

malloc(3), free(3), getpagesize(2), brk(2)

TRADUCTION

Stéphan Rafin, 2002.
Responsable bénévole de la rubrique Linux Professionnel : Olivier Van Hoof - Contacter par EMail :
Vos questions techniques : forum d'entraide Linux Professionnel - Publiez vos articles, tutoriels et cours
et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones
Nous contacter - Copyright © 2000-2008 www.developpez.com - Legal informations.