3
Ruby structs是定义轻量级数据容器的一种便捷方式。我的问题是,它们是否像普通对象或堆栈一样分配在堆上(例如C#值类型)。如果它们是堆分配的,那么ruby结构是否有任何性能优势或缺陷。是否分配了ruby结构堆栈?
Ruby structs是定义轻量级数据容器的一种便捷方式。我的问题是,它们是否像普通对象或堆栈一样分配在堆上(例如C#值类型)。如果它们是堆分配的,那么ruby结构是否有任何性能优势或缺陷。是否分配了ruby结构堆栈?
C#值类型不是堆栈分配的。它们有时是堆栈分配的,有时不是。当您声明值类型类型的本地值时,它们是堆栈分配的,但是当您声明值类型类型的类实例字段时,它们不会被堆栈分配。
Ruby结构体是普通的Ruby类,结构类的实例与堆中分配的任何其他类的实例一样。唯一值类型的Ruby类型是FalseClass
,TrueClass
,NilClass
,Fixnum
和Symbol
。尽管如此,Symbol
是特殊的,因为实例还必须在符号表中全局分配,同时也是值类型。