Data_wrap_struct und markieren Sie die Funktion

8

Ich schreibe eine Ruby-Erweiterung und verwende die Funktion Data_wrap_struct .

Um an Rubys Mark-and-Sweep-Speicherbereinigungsprozess teilzunehmen, muss ich eine Routine definieren, um meine Struktur freizugeben, und eine Routine, um Referenzen von meiner Struktur auf andere Strukturen zu markieren. Ich übergebe die klassische free -Funktion, um den Speicher freizugeben, aber ich weiß nicht, wie man eine Markierungsfunktion benutzt.

meine Strukturen klingen so

%Vor%

Ich denke, dass ich eine Markierungsfunktion brauche, um die Referenzen in collection von Struktur B zu markieren.

Jemand kann mir ein Beispiel zeigen, um zu sehen, wie eine Mark-Funktion funktioniert?

    
Pioz 06.12.2011, 11:07
quelle

1 Antwort

6

Die Markierungsfunktion wird verwendet, um alle Ruby-Objekte zu markieren, die Ihre C-Struktur besitzt.

%Vor%

Wenn das Objekt, das Ihrer Struktur gehört, nicht markiert ist, könnte der Garbage Collector es durchgehen und Ihr Code könnte versuchen, ein finalisiertes Objekt zu verwenden.

    
Matheus Moreira 24.02.2012, 17:08
quelle

Tags und Links