是否分配了ruby结构堆栈?

时间:2012-11-06 12:59:20

标签: ruby memory-management struct callstack

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

1 个答案:

答案 0 :(得分:4)

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

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

相关问题