Namespaces
Variants

max_align_t

From cppreference.net
< c ‎ | types
Определено в заголовочном файле <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)

Смотрите также