哈希是否以Crystal lang的形式出现在堆栈中?

问题描述 投票:1回答:1

使用Crystal语言时,是否在堆栈上分配了哈希值?还是他们总是“堆”?我在文档中找不到任何内容(https://crystal-lang.org/api/0.33.0/Hash.html-在2020年2月19日查找)。我在malloc_*中看到了很多https://github.com/crystal-lang/crystal/blob/master/src/hash.cr,但不确定是否缺少优化。我认为文档没有明确指出-在浏览器中没有对https://crystal-lang.org/api/0.33.0/Hash.html上的“堆”,“堆栈”和“分配”进行查词...找不到任何东西。

crystal-lang
1个回答
0
投票

哈希始终是堆分配的。

在Crystal中,这取决于对象是Reference还是Reference类型。从Value继承的所有对象总是分配在堆上。

哈希定义为Value。因为类总是从Reference继承,所以哈希将始终是堆分配的。

[像class Hash(K, V)这样的值类型,需要堆栈分配,必须将其定义为结构,因此它们不是从class Hash(K, V)继承而是从Reference继承。

© www.soinside.com 2019 - 2024. All rights reserved.