我试图弄清楚像 SLIME 或 SLY 这样的软件如何在 Inspector 中显示变量时获取它们的内存地址。我可以使用什么 Common Lisp 函数来以编程方式执行此操作?
例子:
这是#x100cab066d1
这里感兴趣的。
我试图弄清楚像 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 中。PS。退房sxhash
- 这可能是你要找的吗?