Man page - pvalloc(3)

Packages contains this manual

Available languages:

en fr ja

Manual

posix_memalign

NOM
BIBLIOTHÈQUE
SYNOPSIS
DESCRIPTION
VALEUR RENVOYÉE
ERREURS
ATTRIBUTS
STANDARDS
HISTORIQUE
En-tĂȘtes
NOTES
VOIR AUSSI
TRADUCTION

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 size );
[[obsolĂšte]] void *valloc(size_t
taille );

#include <malloc.h>

[[obsolĂšte]] void *memalign(size_t alignement , size_t taille );
[[obsolĂšte]] 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 () :
Depuis la glibc 2.12 :
(_XOPEN_SOURCE >= 500) && !(_POSIX_C_SOURCE >= 200112L)
|| /* glibc >= 2.19 : */ _DEFAULT_SOURCE
|| /* glibc <= 2.19 : */ _SVID_SOURCE || _BSD_SOURCE
Avant la glibc 2.12 :
_BSD_SOURCE || _XOPEN_SOURCE >= 500

DESCRIPTION

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 multiple de alignement , qui doit ĂȘtre une puissance de deux.

aligned_alloc () est identique Ă  memalign () exceptĂ© que alignement doit ĂȘtre une puissance de deux.

La fonction obsolĂšte valloc () alloue taille 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 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 valeur de errno n’est pas modifiĂ©e. Sur Linux (et d’autres systĂšmes), posix_memalign () ne modifie pas memptr en cas d’erreur. Une exigence normalisant 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

Plus assez de mémoire.

ATTRIBUTS

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

Image grohtml-3886832-1.png

STANDARDS

aligned_alloc ()

C11.

posix_memalign ()

POSIX.1-2008.

memalign ()
valloc
()

Aucun

pvalloc ()

GNU.

HISTORIQUE

aligned_alloc ()

glibc 2.16. C11.

posix_memalign ()

glibc 2.1.91. POSIX.1d, POSIX.1-2001.

memalign ()

glibc 2.0. SunOS 4.1.3.

valloc ()

glibc 2.0. 3.0BSD. QualifiĂ©e d’obsolĂšte dans 4.3BSD et d’historique dans SUSv2.

pvalloc ()

glibc 2.0.

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ée dans <stdlib.h> au lieu de <malloc.h> .

Conformément à SUSv2, valloc () est déclarée dans <stdlib.h> . La glibc la déclare dans <malloc.h> et également dans <stdlib.h> si les macros de test de fonctionnalité adéquates sont définies (voir ci-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 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_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 qu’on peut seulement passer comme paramĂštre Ă  free (3) un pointeur obtenu Ă  l’aide de 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 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 Christophe Blaess <https://www.blaess.fr/christophe/>, Stéphan Rafin <stephan.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.coulon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>, Thomas Huriaux <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis Barbier <barbier@debian.org>, David Prévot <david@tilapin.org> et Grégoire Scano <gregoire.scano@malloc.fr>

Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License version 3 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 .