Namespaces
Variants

memalignment

From cppreference.net
Défini dans l'en-tête <stdlib.h>
size_t memalignment ( const void * p ) ;
(depuis C23)

Retourne l'alignement maximum satisfait par l'adresse fournie. La valeur de retour peut être supérieure à toute valeur d'alignement supportée par l'implémentation. Si p est une valeur de pointeur nul, 0 est retourné pour indiquer que le pointeur ne peut pas être utilisé pour accéder à un objet de n'importe quel type.

Si la valeur de retour est supérieure ou égale à alignof ( T ) , l'exigence d'alignement pour le type T est satisfaite par le pointeur.

Une implémentation autonome doit fournir memalignment .

Table des matières

Paramètres

p - pointeur vers l'alignement de requête

Valeur de retour

La valeur d'alignement de p , ou 0 si p est une valeur de pointeur nul.

Notes

Sur les plateformes courantes où

  • les pointeurs nuls sont convertis en entier 0 ,
  • les valeurs des pointeurs sont directement converties en valeurs numériques des adresses virtuelles, et
  • size_t est identique à uintptr_t ,

cette fonction peut être implémentée comme return ( size_t ) p & - ( size_t ) p ; .

Exemple

#include <stdio.h>
#include <stdlib.h>
int main()
{
    alignas(128) int i = 0;
    printf("%zu\n%zu\n", memalignment(nullptr), memalignment(&i));
}

Sortie possible :

0
128

Références

  • Norme C23 (ISO/IEC 9899:2024):
  • 7.24.9.1 La fonction memalignment (p: 374)

Voir aussi

alloue de la mémoire alignée
(fonction)
désalloue la mémoire précédemment allouée avec taille et alignement
(fonction)