मैं रूबी एक्सटेंशन और Im फ़ंक्शन Data_wrap_struct
का उपयोग कर लिख रहा हूं।Data_wrap_struct और मार्क फ़ंक्शन
रुबी के मार्क-एंड-स्वीप कचरा संग्रहण प्रक्रिया में भाग लेने के लिए, मुझे अपनी संरचना को मुक्त करने के लिए एक दिनचर्या परिभाषित करने की आवश्यकता है, और मेरी संरचना से किसी भी संदर्भ को अन्य संरचनाओं में चिह्नित करने के लिए एक दिनचर्या की आवश्यकता है। मैं स्मृति को मुक्त करने के लिए क्लासिक free
फ़ंक्शन पास करता हूं लेकिन मुझे नहीं पता कि मार्क फ़ंक्शन का उपयोग कैसे करें।
मेरी structs इस
typedef struct
{
int x;
int y;
} A;
typedef struct
{
A collection[10];
int current;
} B;
की तरह ध्वनि मुझे लगता है कि मैं कैसे एक निशान समारोह को देखने के लिए struct बी के collection
में संदर्भ
किसी ने मुझे एक उदाहरण दिखा सकते हैं चिह्नित करने के लिए एक निशान समारोह की जरूरत है काम करता है?
क्या मुझे अन्य रूबी ऑब्जेक्ट्स द्वारा संदर्भित गैर-रूबी ऑब्जेक्ट्स को चिह्नित करने की आवश्यकता है? मेरे मामले में मेरे पास अन्य रूबी वर्गों (उनके संदर्भों के साथ) द्वारा बनाए गए विगेट्स का पेड़ है। – lzap
@Izap, नहीं। 'मार्क' फ़ंक्शन का उपयोग रुबी के कचरा कलेक्टर को ** रूबी ऑब्जेक्ट्स ** के बारे में बताने के लिए किया जाता है जो रूबी वर्चुअल मशीन, जैसे सी एक्सटेंशन के बाहरी कोड से बनाए गए थे। यदि आपके हाथों में रूबी ऑब्जेक्ट है जो अन्य मूल गैर-रूबी ऑब्जेक्ट्स बनाता है, तो आप रूबी ऑब्जेक्ट कचरा इकट्ठा होने के बाद संसाधनों को रिलीज़ करने के लिए 'फ्री' फ़ंक्शन को कार्यान्वित करना चाहेंगे। –