memalignment
|
Definido en el encabezado
<stdlib.h>
|
||
|
size_t
memalignment
(
const
void
*
p
)
;
|
(desde C23) | |
Devuelve la alineación máxima satisfecha por la dirección proporcionada. El valor de retorno puede ser mayor que cualquier valor de alineación soportado por la implementación. Si
p
es un valor de puntero nulo,
0
se devuelve para indicar que el puntero no puede ser usado para acceder a un objeto de cualquier tipo.
Si el valor de retorno se compara mayor o igual que
alignof
(
T
)
, el requisito de alineación para el tipo
T
está satisfecho por el puntero.
Una
implementación independiente
necesita proporcionar
memalignment
.
Contenidos |
Parámetros
| p | - | puntero a la alineación de consulta |
Valor de retorno
El valor de alineación de
p
, o
0
si
p
es un valor de puntero nulo.
Notas
En plataformas comunes donde
- los punteros nulos se convierten al entero 0 ,
- los valores de puntero se convierten directamente a los valores numéricos de direcciones virtuales, y
- size_t es igual a uintptr_t ,
esta función puede implementarse como return ( size_t ) p & - ( size_t ) p ; .
Ejemplo
#include <stdio.h> #include <stdlib.h> int main() { alignas(128) int i = 0; printf("%zu\n%zu\n", memalignment(nullptr), memalignment(&i)); }
Salida posible:
0 128
Referencias
- Estándar C23 (ISO/IEC 9899:2024):
-
- 7.24.9.1 La función memalignment (p: 374)
Véase también
|
(C11)
|
asigna memoria alineada
(función) |
|
(C23)
|
desasigna memoria previamente asignada con tamaño y alineación
(función) |