(u) 루비 확장 : RB_GC_MARK () 및 인스턴스 변수
-
13-09-2019 - |
문제
수업을 정의하는 루비 확장을 쓰고 있습니다. 내가 사용하는 경우 Data_Wrap_Struct()
내 콜백을 구현합니다 rb_define_alloc_func()
, 인스턴스 변수를 수동으로 표시하고 자유롭게해야합니까? 아니면 여전히 나를 위해 처리되어 있습니까?
해결책
Ruby의 GC는 Ruby Object의 인스턴스 변수에서 참조 된 Ruby 객체를 수집합니다. 당신은 무료 루비 인스턴스 변수를 스스로 자유롭게 할 필요가없고 안됩니다 (즉, 액세스 한 객체 rb_iv_set()
/ rb_iv_get()
연장에서).
그러나 포장 된 경우 C 구조 Ruby Objects를 참조하면 mark
당신이 지나가는 콜백 Data_Wrap_Struct()
.
(그리고 당신은 항상 기본 구조물을 자유롭게하고 파일, 소켓 등과 같은 다른 정리를 수행해야합니다. free
콜백.)
제휴하지 않습니다 StackOverflow