Mad*_*ist 1 sbcl common-lisp allegro-cl
我试图弄清楚像 SLIME 或 SLY 这样的软件如何在 Inspector 中显示变量时获取变量的内存地址。我可以使用什么 Common Lisp 函数来以编程方式执行此操作?
例子:
这是#x100cab066d1这里感兴趣的。
您不想:垃圾收集可能(并且经常这样做!)移动对象,因此对象的地址可能因观察而异。另一个问题是由直接对象(例如,1或#\A)引起的 - 它们的地址是什么?!
也就是说,ANSI CL 提供了
大多数 lisps 解释为表示内存中当前地址的:identity参数
print-unreadable-object。
唉,输出格式是依赖于实现的(例如,SBCL 将地址包装在 中{}),所以最好找到返回地址的特定于实现的函数。
使用apropos,我们很容易找到
system::address-of 在 CLISP 中;sb-kernel:get-lisp-obj-address 在 SBCL 中。附注。退房sxhash- 这可能是你正在寻找的吗?