Адрес объекта в памяти Common Lisp
1 ответ
Вы не хотите: сборщик мусора может (и часто делает!) Перемещать объекты, поэтому адрес объекта может отличаться между наблюдениями. Другая проблема связана с непосредственными объектами (например, 1
или же #\A
) - какими будут их адреса?!
Тем не менее, ANSI CL предлагает :identity
аргумент print-unreadable-object
который большинство интерпретирует как текущий адрес в памяти.
Увы, формат вывода зависит от реализации (например, SBCL переносит адрес в {}
), так что лучше найти специфическую для реализации функцию, которая возвращает адрес.
С помощью apropos
мы легко находим
system::address-of
в CLISP;sb-kernel:get-lisp-obj-address
в SBCL.
PS. Проверять, выписываться sxhash
- это то, что вы ищете?