6
클래스를 정의하는 루비 확장을 쓰고 있습니다. Data_Wrap_Struct()
을 사용하여 rb_define_alloc_func()
에 대한 콜백을 구현하는 경우 수동으로 인스턴스 변수를 표시하고 해제해야합니까? 아니면 아직도 처리되는 거니?(U) Ruby 확장 : rb_gc_mark() 및 인스턴스 변수
클래스를 정의하는 루비 확장을 쓰고 있습니다. Data_Wrap_Struct()
을 사용하여 rb_define_alloc_func()
에 대한 콜백을 구현하는 경우 수동으로 인스턴스 변수를 표시하고 해제해야합니까? 아니면 아직도 처리되는 거니?(U) Ruby 확장 : rb_gc_mark() 및 인스턴스 변수
Ruby의 GC는 Ruby 객체의 인스턴스 변수에서 참조되는 Ruby 객체를 수집합니다. Ruby 인스턴스 변수를 직접 (즉, 확장에 rb_iv_set()
/rb_iv_get()
으로 액세스 한 모든 객체) 확보 할 필요가 없으며 그렇게해서는 안됩니다. 랩 C 구조체가 참조 루비 객체 경우
그러나, 당신은 당신이 Data_Wrap_Struct()
에 전달하는 mark
콜백 사람들을 표시해야합니다.
(그리고 당신은 항상 기본 구조체를 해제해야하고, 그러한 당신의 free
콜백 등 폐쇄 파일, 소켓, 필요에있을 수있는 다른 청소를 할 것입니다.)