Namespaces
Variants

memalignment

From cppreference.net
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

asigna memoria alineada
(función)
desasigna memoria previamente asignada con tamaño y alineación
(función)