Spec-Zone.ru › C

max_align_t

Определено в заголовке <stddef.h>
typedef /*implementation-defined*/ max_align_t;
(с C11)

max_align_t — это тип, чьи требования к выравниванию не менее строгие (не меньше), чем у каждого скалярного типа.

Примечания

Указатели, возвращаемые функциями выделения памяти, такими как malloc, должным образом выровнены для любого объекта, что означает, что они выровнены не менее строго, чем max_align_t.

max_align_t обычно является синонимом самого большого скалярного типа, который на большинстве платформ является long double, и его требования к выравниванию составляют либо 8, либо 16.

Пример

#include <stdio.h>
#include <stddef.h>
#include <stdalign.h>
#include <stdlib.h>
#include <stdint.h>
#include <inttypes.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

Ссылки

  • Стандарт 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/w/c/types/max_align_t

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API