我怎么知道堆栈和堆中是否有东西?

奇诺

在Rust中,有很多不同的类型。我怎么知道堆栈和堆中是否有东西?

假设我嵌套的结构深达20个级别,并且每个级别都包含堆栈数据,但是在20个级别上有一个堆Box,这是否意味着整个树现在都在堆上?

如果结构的根在堆栈的Box内,那该怎么办?所有基于堆栈的数据现在都移到了堆栈上吗?

是否有工具可以观察此堆栈与堆逻辑?

马斯林

在Rust中,有很多不同的类型。我怎么知道堆栈和堆中是否有东西?

如果没有人将其放在堆上,那么它就不在堆上。

假设我嵌套的结构深达20个级别,并且每个级别都包含堆栈数据,但是在20个级别上有一个堆Box,这是否意味着整个树现在都在堆上?

编号Box是专门用于堆的指针。所以盒子里面的东西都在堆上。剩下的就放在您放置的位置(树本身可以放在一个盒子中,这时您将拥有一个指向另一个堆分配结构的堆分配结构)。

其他常见的堆指针是RcArcString,或Vec当然,还有其他更复杂的结构可以在堆上完成工作,而不必真正成为指针,例如HashMap,朋友。

如果结构的根在堆栈的Box内,那该怎么办?所有基于堆栈的数据现在都移到了堆栈上吗?

是。由于结构的其余部分在“根”的“内部”,因此将整个内容装箱。

是否有工具可以观察此堆栈与堆逻辑?

并不是的。有诸如跟踪分配器之类的工具,或某些分配器中的调试支持(例如,jemalloc中的堆分析),可以让您跟踪堆分配。但是所有这些都可以告诉您,已分配了一定数量的字节,而不是这些字节的确切字节数,并且您只能通过推断未发生堆分配来知道未发生堆分配。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我怎么知道Rust中是否初始化了某些东西?

我怎么知道我的 x 和 y 是否在我的列表中

我怎么知道我的Linux中是否还有“外国”软件包

我怎么知道我的服务器是否有NUMA?

我怎么知道我的班级是否有财产

我怎么知道我是否有Gnome或KDE?

我怎么知道,UITextField和UITextView中是否进行了任何更改/修改?

我怎么知道Java中Fork and Join是否具有足够的池大小?

我怎么知道某个方法是否调用了在 c# 中具有特定属性的方法

也许我还不了解C ++中的堆和堆栈的概念

在棋盘上,一块用枪射击另一块,我怎么知道是否还有其他东西在交火中?

我怎么知道Django中的变量是否包含任何内容?

我怎么知道元组中是否存在某种条件?

我怎么知道页面是否在浏览器中运行?

我怎么知道回调中是否需要“err”参数?

我怎么知道鼠标在D3堆叠条的哪个条中?

堆栈和堆的大小是否可变?

我怎么知道我的minVersion是否良好?

我怎么知道在Linux的什么地方放东西?

我怎么知道hbase表中的所有列?

我怎么知道有特定条件的行号?在 R 中

我怎么知道演示已经完成,因为VkPresentInfoKHR和vkQueuePresentKHR中没有信号灯和栅栏?

我怎么知道是否使用的onComplete或的onSuccess?

我怎么知道dd是否仍在工作?

我怎么知道crontab是否工作正常?

我怎么知道是否存在膨胀视图

我怎么知道按钮是否被拨动?

我怎么知道我的顶点有连接?

我怎么知道当前值已经存储在数据库中?[具有LINQ和最佳性能]