Идентификатор отрицательного объекта - PullRequest
3 голосов
/ 30 января 2012

Я, кажется, получаю отрицательные значения для object_id для некоторых объектов. Это правильно? Если так, то когда * ruby-объект object_id отрицателен?

Ответы [ 2 ]

2 голосов
/ 30 января 2012

https://github.com/ruby/ruby/blob/ruby_1_9_3/gc.c#L3171 должен ответить на ваш вопрос полностью, технически подробно, но в конечном итоге, потому что указатель объекта изменяется различными способами, а затем возвращается как целое число со знаком.

1 голос
/ 30 января 2012

Целые числа имеют нечетные object_id, а другие объекты используют четные object_id.Чтобы это работало, отрицательные целые числа имеют (нечетные) отрицательные значения object_id - в другом месте нет места.Четные отрицательные значения object_id могут использоваться для других объектов.

...