我真的对Rust的内存分配系统感到困惑.
在Java中,使用new
在堆上分配内存.在C语言中,使用malloc()
,其他所有内容都在堆栈中.
我认为,在Rust中,Box<T>
在堆上分配内存,但在读取"Defining Our Own Smart Pointer" section in chapter 15.2 in The Rust Programming Language之后,MyBox<T>
似乎没有任何特殊的注释来使T
的值在堆上有效.
-
堆栈上到底有什么,堆上到底有什么?
-
MyBox<T>
的实现与Box<T>
基本相同吗? -
如果实现是相同的,那么是什么让
T
存储在堆上而不是堆栈上? -
如果实现不一致,那么是什么让
Box<T>
在堆上分配内存?