memalignment
|
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
|
(C11)
|
alloue de la mémoire alignée
(fonction) |
|
(C23)
|
désalloue la mémoire précédemment allouée avec taille et alignement
(fonction) |