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

Функция dealloc

Функция dealloc освобождает блок памяти, который был ранее выделен с помощью функции alloc. Она принимает указатель на начало блока памяти и объект Layout, описывающий размер и выравнивание этого блока. Функция является небезопасной, так как при неправильных параметрах может привести к повреждению памяти. Параметром функция принимает указатель на блок памяти и его layout.

Синтаксис

unsafe { std::alloc::dealloc(ptr, layout) }

Пример

Давайте выделим память под массив из пяти целых чисел, запишем в него значения, выведем их на экран, а затем освободим память:

use std::alloc::{alloc, dealloc, Layout}; fn main() { let layout = Layout::array::<i32>(5).unwrap(); unsafe { let ptr = alloc(layout) as *mut i32; for i in 0..5 { ptr.add(i).write((i + 1) as i32); } for i in 0..5 { println!("{}", *ptr.add(i)); } dealloc(ptr as *mut u8, layout); } }

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

1 2 3 4 5

Пример

Давайте выделим память под один байт, запишем в него значение и освободим память:

use std::alloc::{alloc, dealloc, Layout}; fn main() { let layout = Layout::new::<u8>(); unsafe { let ptr = alloc(layout); ptr.write(42); println!("{}", *ptr); dealloc(ptr, layout); } }

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

42

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

  • функция alloc,
    которая выделяет блок памяти
  • структура Layout,
    которая описывает размер и выравнивание памяти
  • функция write,
    которая записывает значение по указателю
  • функция read,
    которая читает значение по указателю
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить