使用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中,这取决于对象是Reference
还是Reference
类型。从Value
继承的所有对象总是分配在堆上。
哈希定义为Value
。因为类总是从Reference
继承,所以哈希将始终是堆分配的。
[像class Hash(K, V)
这样的值类型,需要堆栈分配,必须将其定义为结构,因此它们不是从class Hash(K, V)
继承而是从Reference
继承。