Ruby结构体是否使用堆栈分配?

3

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

1个回答

4

C# 值类型并不总是存储在栈上。当你声明一个值类型的局部变量时,它们才会存储在栈上,但当你声明一个值类型的类实例字段时,它们就不会存储在栈上。

Ruby 结构体是普通的 Ruby 类,结构体类的实例与其它任何类的实例一样,都会存储在堆上。唯一的 Ruby 值类型是 FalseClassTrueClassNilClassFixnumSymbol。然而,Symbol 是特殊的,因为实例必须同时在符号表中全局分配,而且仍然是值类型。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接