РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1230 of 1245 menu

Тип Layout

Тип Layout из модуля std::alloc описывает размер и выравнивание блока памяти. Он используется для низкоуровневого управления памятью, например, при работе с alloc и dealloc. Layout создаётся через методы Layout::new, Layout::from_size_align и Layout::array. Параметром метод Layout::new принимает тип, размер и выравнивание которого нужно вычислить.

Синтаксис

Layout::new::<T>() Layout::from_size_align(size, align) Layout::array::<T>(n)

Пример

Давайте создадим Layout для типа u32 и выведем его размер и выравнивание:

use std::alloc::Layout; fn main() { let layout = Layout::new::<u32>(); println!("size: {}", layout.size()); println!("align: {}", layout.align()); }

Результат выполнения кода:

size: 4 align: 4

Пример

Давайте создадим Layout для массива из 5 элементов типа u32 с помощью метода Layout::array:

use std::alloc::Layout; fn main() { let layout = Layout::array::<u32>(5).unwrap(); println!("size: {}", layout.size()); println!("align: {}", layout.align()); }

Результат выполнения кода:

size: 20 align: 4

Пример

Давайте создадим Layout вручную с помощью метода Layout::from_size_align и проверим его параметры:

use std::alloc::Layout; fn main() { let layout = Layout::from_size_align(16, 8).unwrap(); println!("size: {}", layout.size()); println!("align: {}", layout.align()); }

Результат выполнения кода:

size: 16 align: 8

Пример

Давайте проверим, что произойдёт при попытке создать Layout с выравниванием, не являющимся степенью двойки:

use std::alloc::Layout; fn main() { let res = Layout::from_size_align(16, 3); println!("{:?}", res.is_err()); }

Результат выполнения кода:

true

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

  • функция alloc,
    которая выделяет память по заданному Layout
  • функция dealloc,
    которая освобождает память по заданному Layout
  • функция size_of,
    которая возвращает размер типа в байтах
  • функция align_of,
    которая возвращает выравнивание типа в байтах
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить