max_align_t
Определено в заголовке <stddef.h> | ||
|---|---|---|
typedef /*implementation-defined*/ max_align_t; | (начиная с C11) |
max_align_t — тип, требование к выравниванию которого не менее строгое (то есть не меньше), чем у любого скалярного типа.
Примечания
Указатели, возвращаемые функциями выделения памяти, такими как malloc, имеют подходящее выравнивание для любого объекта, то есть выравниваются не менее строго, чем max_align_t.
Пример
#include <inttypes.h>
#include <stdalign.h>
#include <stddef.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
size_t a = alignof(max_align_t);
printf("Alignment of max_align_t is %zu (%#zx)\n", a, a);
void *p = malloc(123);
printf("The address obtained from malloc(123) is %#" PRIxPTR"\n",
(uintptr_t)p);
free(p);
}
Возможный вывод:
Alignment of max_align_t is 16 (0x10) The address obtained from malloc(123) is 0x1fa67010
Ссылки
- Стандарт C23 (ISO/IEC 9899:2024):
- 7.19 Общие определения <stddef.h> (с. TBD)
- Стандарт C17 (ISO/IEC 9899:2018):
- 7.19 Общие определения <stddef.h> (с. 211)
- Стандарт C11 (ISO/IEC 9899:2011):
- 7.19 Общие определения <stddef.h> (с. 288)
См. также
Документация по C++ для max_align_t |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/c/types/max_align_t