Память (Memory)
Программы на Rust имеют 3 региона памяти в которых хранятся данные:
- data memory (память данных) - для данных фиксированного размера и статических данных (доступные в любой момент времени выполнения программы).
Рассмотрим текст в вашей программе (пример строка "Hello World!"). Эта строка является
набором байт, которые нельзя изменить и можно только считать, поэтому они могут сохраняться в данном регионе. Компиляторы
делают очень много оптимизаций с таким видом данных. Этот регион памяти считается очень быстрым, так как
местоположение данных известно и фиксировано заранее.
- stack memory (стек) - для данных, которые объявлены как переменные внутри тела функции.
Местоположение этого типа памяти никогда не меняется на протяжении вызова функции, из-за этого компиляторы
могут оптимизировать код, поэтому взаимодействие со стековой памятью очень быстро работает.
- heap memory (куча) - для данных, которые создаются во время работы приложения.
Данные в этом регионе могут быть добавлены, перемещены, удалены, изменены в размере, и т.д. Из-за своей
динамической природы, считается что этот регион медленней остальных, но он позволяет более творческое использование
памяти. Когда данные добавляются в этот регион, это называется allocation (выделение памяти). Когда данные
удаляются из данного региона, мы называем это deallocation (освобождение памяти).