3

Ruby结构是定义轻量级数据容器的便捷方式。我的问题是它们是像普通对象一样在堆上分配还是在堆栈上分配(例如,在 C# 值类型中)。如果它们是堆分配的,那么 ruby​​ 结构是否有任何性能优势或缺陷。

4

1 回答 1

4

C# 值类型不是堆栈分配的。它们有时是堆栈分配的,有时不是。当您声明值类型类型的本地值时,它们是堆栈分配的,但当您声明值类型类型的类实例字段时,它们不会堆栈分配。

Ruby 结构是普通的 Ruby 类,结构类的实例就像任何其他类的实例一样,分配在堆上。唯一属于值类型的 Ruby 类型是FalseClassTrueClassNilClassFixnumSymbolSymbol但是,这是特殊的,因为实例还必须在符号表中全局分配,同时又是值类型。

于 2012-11-06T13:53:53.907 回答