首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >内存中的对象地址Common Lisp

内存中的对象地址Common Lisp
EN

Stack Overflow用户
提问于 2018-05-31 04:34:00
回答 1查看 633关注 0票数 1

我正在试图弄清楚像SLIME或SLY这样的软件是如何在Inspector中显示变量时获取变量的内存地址的。我可以使用哪个Common Lisp函数来以编程方式完成此操作?

示例:

这里感兴趣的是#x100cab066d1

EN

回答 1

Stack Overflow用户

发布于 2018-05-31 05:15:04

您不想这样做:垃圾收集可能(而且经常是这样做的!)移动对象,因此对象的地址在不同的观测值之间可能不同。另一个问题是直接对象(例如,1#\A) --它们的地址是什么?!

也就是说,ANSI CL向print-unreadable-object提供了:identity参数,大多数lisps将该参数解释为内存中的当前地址。

遗憾的是,输出格式依赖于实现(例如,SBCL将地址包装在{}中),因此最好找到返回地址的特定于实现的函数。

使用apropos,我们可以很容易地找到

SBCL中CLISP;

  • sb-kernel:get-lisp-obj-address中的
  • system::address-of

PS。查看sxhash --这可能是你正在寻找的吗?

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50612953

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档