首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在结构中引用内存的正确方法是什么?

在结构中引用内存的正确方法是什么?
EN

Stack Overflow用户
提问于 2019-10-27 09:08:19
回答 1查看 53关注 0票数 0

我有一种叫比萨的结构。它包含一个单一的基结构和一个Topping结构的向量。

我有一个返回必胜客的助手方法。在不久的将来,我看到顶部是一个集合,_Pizza_s是从这个_Topping_s集合(混合和匹配样式)动态创建的。

我的问题是,结构应该如何引用基础和顶部。如果我把所有权交给了struct,那么处理它就很容易了(没有生存期声明,助手方法也更容易,因为它们不再需要在作用域之外创建内存)。但是,通过使_Topping_s超出我的助手方法的作用域并声明生命周期,我的内存中的重复次数减少了。

人们是如何思考这些问题的?有什么推荐的经验法则吗?两者都有可能吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-01 03:06:49

如果Topping很小(例如,一个enum),那么您可以只复制它(例如,到Vec<Topping>中)。

如果Topping很大,并且只想在内存中复制一个副本,那么最容易使用的方法是使用Arc<Topping>,它是一个共享指针,可以廉价地复制,并且可以很容易地传递(例如,到Vec<Arc<Topping>>中)。

如果PizzaTopping只在一个特定的静态已知范围内使用(例如,您在main()中创建所有的说明,以后不更改它们,或者使用内存池),那么您可以在Pizza<'a>中使用&'a Topping,但与Rc/Arc相比,这可能是微不足道的性能改进,并且跟踪临时生命周期将很烦人。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58577957

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档