在Ruby中Fiddle.dlwrap和Fiddle.dlunwrap做什么?

在Ruby中Fiddle.dlwrap和Fiddle.dlunwrap做什么?,ruby,ffi,fiddle,Ruby,Ffi,Fiddle,我想了解Ruby的小提琴库是如何工作的。我基本上了解它是如何与libffi交互的,但有一件事仍然困扰着我:Fiddle.dlwrap和Fiddle.dlunwrap到底做了什么 文件只是说 dlunwrap(addr) 返回内存指针地址的十六进制表示形式addr dlwrap(val) 返回函数十六进制地址位置的内存指针val (来自) 我试着用它们传递各种不同类型的对象和字符串。无论您传入什么,这些方法总是返回值(不仅仅是指向C函数的十六进制指针字符串)。dlwrap似乎只是返回传入对象的内存

我想了解Ruby的小提琴库是如何工作的。我基本上了解它是如何与libffi交互的,但有一件事仍然困扰着我:Fiddle.dlwrap和Fiddle.dlunwrap到底做了什么

文件只是说

dlunwrap(addr)

返回内存指针地址的十六进制表示形式
addr

dlwrap(val)

返回函数十六进制地址位置的内存指针
val

(来自)

我试着用它们传递各种不同类型的对象和字符串。无论您传入什么,这些方法总是返回值(不仅仅是指向C函数的十六进制指针字符串)。dlwrap似乎只是返回传入对象的内存地址,但在这种情况下有两件事没有太大意义:

  • 如果我传入一个短字符串,并使用结果作为地址创建指针,那么它指向的内存不是字符串
  • 如果我传入一个数字,它只返回该数字的对象ID
  • 如果有人对小提琴的内部运作有一些秘密的了解,并愿意分享,请帮助:)