Data_Wrap_Struct和TypedData_Wrap_Struct之间的区别?

时间:2018-03-20 14:12:48

标签: c ruby ruby-c-extension

我在Ruby C扩展中包装C结构但是我无法在文档中找到Data_Wrap_Struct和TypedData_Wrap_Struct之间的差异,这两个函数之间的区别是什么?

1 个答案:

答案 0 :(得分:1)

official documentation中很好地描述了它。

tl; dr是不推荐使用Data_Wrap_Struct,只是让你为包装数据设置类和标记/自由函数。 TypedData_Wrap_Struct允许您设置类,然后使用指向rb_data_type_struct结构的指针,该结构允许为包装设置更高级的选项:

  • 标记/自由功能与以前一样,但也
  • 用于标识包装类型的内部标签
  • 计算内存消耗的函数
  • 任意数据(基本上允许您在类级别包装数据)
  • 垃圾收集优化的其他标志

查看我的unofficial documentation,了解如何使用它的几个例子。