Struct 如果我创建一个结构并将其放入向量中,它是驻留在堆上还是堆栈上?
我正在编写一些生成几何元素向量的代码:Struct 如果我创建一个结构并将其放入向量中,它是驻留在堆上还是堆栈上?,struct,rust,heap-memory,Struct,Rust,Heap Memory,我正在编写一些生成几何元素向量的代码: struct Geom_Entity { // a bunch of geometric information, // like tangent planes, force vectors, etc } 代码正在从文本文件(例如)解析这些实体中的许多,因此我们目前有一个函数: parse_Geom(x: String) -> Vec<Geom_Entity> { // a bunch of code } 然
struct Geom_Entity {
// a bunch of geometric information,
// like tangent planes, force vectors, etc
}
代码正在从文本文件(例如)解析这些实体中的许多,因此我们目前有一个函数:
parse_Geom(x: String) -> Vec<Geom_Entity> {
// a bunch of code
}
然后把盒子放在向量中?强调(我的):
如果Vec
已分配内存,则它指向的内存位于堆上
因此,是的,向量的成员属于向量,并存储在堆中
通常,在将元素放入
Vec
之前对其进行装箱是一种浪费——会有额外的内存分配和间接寻址。有时候,你需要额外的分配或间接处理,所以永远不要说永远
另见:
PascalCase
(无下划线)作为类型名(GeomEntity
),使用snake\u case
作为变量和函数名(parse\u geom
)。Vec
其中T
是特征类型,可能是装箱元素本身最常见的情况。
Box::new(Geom_Entity { ...