2
所以這可能是一個愚蠢的問題,但我不確定使用Ruby擴展確切的GC行爲。例如,如果我在C函數中調用rb_hash_new
,然後在將值返回給Ruby代碼之前開始對其執行一些處理,那麼邏輯可能會中途中斷,並且Ruby散列會被GC收割?下面的示例代碼。在C擴展中分配的Ruby對象是否可以隨時獲得?
VALUE my_function(VALUE rb_self) {
VALUE hash = rb_hash_new();
// Do some stuff with hash
return hash;
}
上述示例中的散列在返回之前是否可以解除分配?如果是的話,是否唯一的方法來防止這種情況發生,即使它們只是暫時使用,無論如何確保所有分配的Ruby對象都被傳遞給Data_Wrap_Struct
的函數標記?
謝謝,I:
爲了從「忙」的目的,使用的列表中刪除該對象希望有更多的文件! – ddt 2013-02-21 07:33:52