memalignment
|
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
|
(C11)
|
weist ausgerichteten Speicher zu
(Funktion) |
|
(C23)
|
gibt zuvor zugewiesenen dimensionierten und ausgerichteten Speicher frei
(Funktion) |