我正在编写一个Ruby扩展程序,并使用函数。
为了参与Ruby的标记和清除垃圾回收过程,我需要定义一种释放结构的例程以及一种将我的结构体引用到其他结构体标记的例程。我传递经典的函数来释放内存,但我不知道如何使用标记函数。
我的结构体看起来像这样
typedef struct
{
int x;
int y;
} A;
typedef struct
{
A collection[10];
int current;
} B;
我认为我需要一个标记函数来标记结构体B中的collection
中的引用。
有人可以给我展示一个标记函数的例子,让我看看它是如何工作的吗?
mark
函数用于告诉 Ruby 的垃圾收集器有关从 Ruby 虚拟机外部代码创建的 Ruby 对象,例如 C 扩展程序。如果你手头有一个 Ruby 对象,它创建其他本地非 Ruby 对象,你可能想要实现一个free
函数,在 Ruby 对象被垃圾回收后释放资源。 - Matheus Moreira