Namespaces
Variants

memalignment

From cppreference.net
Definiert in Header <stdlib.h>
size_t memalignment ( const void * p ) ;
(seit C23)

Gibt die maximale Ausrichtung zurück, die von der bereitgestellten Adresse erfüllt wird. Der Rückgabewert kann größer sein als jeder von der Implementierung unterstützte Ausrichtungswert. Wenn p ein Nullzeigerwert ist, wird 0 zurückgegeben, um anzuzeigen, dass der Zeiger nicht verwendet werden kann, um auf ein Objekt eines beliebigen Typs zuzugreifen.

Wenn der Rückgabewert größer oder gleich alignof ( T ) ist, wird die Ausrichtungsanforderung für den Typ T durch den Zeiger erfüllt.

Eine freestanding Implementation muss memalignment bereitstellen.

Inhaltsverzeichnis

Parameter

p - Zeiger auf die Abfrageausrichtung

Rückgabewert

Der Ausrichtungswert von p , oder 0 falls p ein Nullzeigerwert ist.

Hinweise

Auf gängigen Plattformen, wo

  • Nullzeiger werden in Ganzzahlen umgewandelt 0 ,
  • Zeigerwerte werden direkt in die numerischen Werte von virtuellen Adressen umgewandelt, und
  • size_t ist gleich uintptr_t ,

Diese Funktion kann implementiert werden als return ( size_t ) p & - ( size_t ) p ; .

Beispiel

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

Mögliche Ausgabe:

0
128

Referenzen

  • C23-Standard (ISO/IEC 9899:2024):
  • 7.24.9.1 Die memalignment-Funktion (S: 374)

Siehe auch

weist ausgerichteten Speicher zu
(Funktion)
gibt zuvor zugewiesenen dimensionierten und ausgerichteten Speicher frei
(Funktion)