Функция 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