否定对象ID

时间:2012-01-30 07:56:40

标签: ruby ruby-1.9.3

对于某些对象,我似乎得到object_id的负值。它是否正确?如果是这样,什么时候ruby对象的object_id为负?

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

整数具有奇怪的object_id,而其他对象使用偶数object_id。为了实现这一点,负整数有(奇数)负的object_id - 其他地方没有空间。偶数负的object_id可以自由地用于其他对象。