Я действительно запутался в системе выделения памяти в Rust.
В Java вы используете new
для выделения памяти в куче.В C вы используете malloc()
, все остальное идет в стек.
Я думал, что в Rust Box<T>
выделяет память в куче, но после прочтения раздела «Определение нашего собственного умного указателя» вглава 15.2 в языке программирования Rust похоже, что MyBox<T>
не имеет какой-либо специальной аннотации, чтобы сделать значение T
живым в куче.
Что именно идет в стек, а что в кучу?
Является ли реализация MyBox<T>
практически такой же, как Box<T>
?
Если реализации идентичны, что делает T
хранящимся в куче, а не в стеке?
Если реализации не идентичны, что делает Box<T>
выделить память на кучу?