मैं सी ++ में मेमोरी को प्रबंधित करने में मदद करने वाली नई सुविधाओं को जोड़ने के लिए अपनी गतिशील मेमोरी प्रबंधन प्रणाली को कार्यान्वित करना चाहता हूं।मॉलोक और निःशुल्क कैसे कार्यान्वित किया जाता है?
मैं विंडोज (एक्सपी) और लिनक्स (उबंटू) का उपयोग करता हूं। 'मॉलोक' और 'फ्री' जैसे कार्यों को लागू करने के लिए क्या आवश्यक है? मुझे लगता है कि मुझे निम्नतम स्तर की सिस्टम कॉल का उपयोग करना है।
विंडोज के लिए, मुझे फ़ंक्शन मिल गए हैं: GetProcessHeap, HeapAlloc, HeapCreate, HeapDestroy और HeapFree।
लिनक्स के लिए, मुझे ढेर प्रबंधन के लिए कोई सिस्टम कॉल नहीं मिला है। लिनक्स पर, मॉलोक और फ्री सिस्टम कॉल हैं, है ना?
धन्यवाद
संपादित करें:
सी ++ कचरा कलेक्टर प्रदान नहीं करता है और कचरा कलेक्टर धीमी है। कुछ आवंटन मुफ्त में आसान होते हैं, लेकिन ऐसे आवंटन होते हैं जिन्हें कचरा कलेक्टर की आवश्यकता होती है।
मैं इन कार्यों को कार्यान्वित करना चाहता हूं और नई विशेषताएं जोड़ना चाहता हूं:
* जब भी मुफ्त() कहा जाता है, तो जांचें कि पॉइंटर ढेर से संबंधित है या नहीं।
* कचरा संग्रह के साथ मदद करें। मुझे आवंटित ब्लॉक के बारे में कुछ जानकारी स्टोर करनी है।
* एकाधिक ढेर का उपयोग करें (विंडोज़ पर हीपक्रेट/हीपडेस्ट्राय)। मैं अपने आवंटित ब्लॉक के साथ जल्दी से एक ही ढेर को हटा सकता हूं।
आपको बूस्ट के पूल आवंटकों को देखना चाहिए: http://www.boost.org/doc/libs/1_43_0/libs/pool/doc/index.html –
क्या आप सुनिश्चित हैं कि हेपअलोक एक सिस्टम (कर्नेल) कॉल है? इन्हें उपयोगकर्ता-पक्ष को अच्छी तरह से कार्यान्वित किया जा सकता है और प्रक्रिया को और अधिक स्मृति की आवश्यकता होने पर कुछ छिपे हुए निजी कर्नेल-साइड फ़ंक्शन को ट्रिगर कर सकते हैं। – doron
स्क्वाल - यह शब्द से होमवर्क प्रश्न की तरह अजीब लगता है। हाँ? नहीं? –