3

object_id对于某些对象,我似乎得到了负值。它是否正确?如果是这样,红宝石对象何时是object_id负数?

4

2 回答 2

2

https://github.com/ruby/ruby/blob/ruby_1_9_3/gc.c#L3171应该完整地回答您的问题,技术细节,但最终因为对象指针以各种方式修改,然后作为签名返回整数。

于 2012-01-30T08:12:04.380 回答
1

整数有奇数的object_id,其他对象使用偶数的object_id。为此,负整数具有(奇数)负 object_id - 其他地方没有空间。偶数负的 object_id 可以自由地用于其他对象。

于 2012-01-30T08:15:17.520 回答