El "heap" es el área de memoria para
asignaciones de larga duración. El
programador puede acceder a él utilizando
tipos como Box o Vec . Detrás de escena, el
compilador maneja esa memoria insertando
llamadas a algún asignador de memoria.
La interfaz
La interfaz del asignador en Rust
se define a través del Allocrasgo ,
que se ve así:
El allocmétodo debe asignar un bloque de
memoria con el tamaño y la alineación
dados a través del Layoutparámetro. El
deallocatemétodo debería liberar dichos
bloques de memoria nuevamente. Ambos
métodos son unsafe, como es el rasgo en sí.
Alloc
El Allocrasgo es parte de la alloccaja, que corees
un subconjunto de la biblioteca estándar de
Rust. Además del rasgo, la caja también
contiene los tipos estándar que requieren
asignaciones como Box, Vecy Arc. Podemos
incluirlo a través de un simple extern crate:
A Bump Allocator
Para nuestro primer asignador, comenzamos
simple. Creamos un
memory::heap_allocatormódulo que contiene un
llamado asignador de protuberancias :
Alineamiento
Para simplificar la alineación,
agregamos align_downy
align_upfunciones: