Bir Ruby uzantısı ve Im'i Data_wrap_struct
işlevini kullanarak Im yazıyorum.Data_wrap_struct ve işaretleme işlevi
Ruby markalı çöp toplama işlemine katılabilmek için, yapmamı serbest bırakmak için bir yordam tanımlamanız ve yapıdan diğer yapılara yapılan tüm referansları işaretlemek için bir rutin tanımlamanız gerekir. Belleği boşaltmak için klasik free
işlevini iletiyorum ancak bir işaret işlevinin nasıl kullanılacağını bilmiyorum.
benim yapılar Ben nasıl bir işareti işlevi görmeye
biri bana örnek gösterebilirler yapı B'nin collection
başvuruları işaretlemek için bir işaret işlevini gerektiğini düşünüyorum bu
typedef struct
{
int x;
int y;
} A;
typedef struct
{
A collection[10];
int current;
} B;
gibi ses Eserleri?
Diğer Ruby nesneleri tarafından başvurulan Ruby olmayan nesneleri de işaretlemem gerekir mi? Benim durumumda diğer Ruby sınıfları tarafından yaratılmış bir widget ağacım var (onlara referansla). – lzap
@ Izap, no. 'Mark' işlevi, Ruby'nin çöp toplayıcısına, bir C uzantısı gibi Ruby sanal makinesinin harici kodundan oluşturulan ** Ruby nesneleri hakkında bilgi vermek için kullanılır. Elinizde başka bir Ruby olmayan nesne yaratan bir Ruby nesnesi varsa, Ruby nesnesi çöp toplandıktan sonra kaynakları serbest bırakan bir 'serbest 'işlevini uygulamak isteyebilirsiniz. –