अगर मैं सही ढंग से याद है, malloc वास्तव में एक OS विशेष समारोह
नहीं काफी कहता है। अधिकांश हार्डवेयर में 4 केबी पृष्ठ का आकार होता है। ऑपरेटिंग सिस्टम आम तौर पर पेज आवंटित (और पेज-गठबंधन) भाग से छोटे कुछ भी एक स्मृति आवंटन इंटरफ़ेस का पर्दाफाश नहीं करते हैं।
malloc
खर्च करता है अपने समय के सबसे आभासी स्मृति अंतरिक्ष कि पहले से ही आबंटित किया गया है, और कभी कभी ही ओएस से अधिक स्मृति का अनुरोध करता प्रबंध (स्पष्ट रूप से इस और आइटम आप आवंटित के आकार कि आप कितनी बार free
पर निर्भर करता है)।
एक आम गलत धारणा है कि जब आप free
कुछ इसे तुरंत ऑपरेटिंग सिस्टम में वापस कर दिया जाता है। हालांकि यह कभी-कभी होता है (विशेष रूप से बड़े मेमोरी ब्लॉक के लिए) आमतौर पर यह मामला है कि free
डी स्मृति प्रक्रिया के लिए आवंटित बनी हुई है और फिर बाद में malloc
एस द्वारा फिर से उपयोग की जा सकती है।
तो अधिकांश काम पहले से आवंटित आभासी स्थान की बहीखाता में है। आवंटन रणनीतियों में कई लक्ष्य हो सकते हैं, जैसे तेज संचालन, कम स्मृति बर्बादी, अच्छा इलाका, गतिशील विकास के लिए स्थान (उदा। realloc
) और इसी तरह।
यदि आप स्मृति आवंटन और रिलीज के अपने पैटर्न के बारे में अधिक जानते हैं, तो आप अपने उपयोग पैटर्न के लिए malloc
और free
अनुकूलित कर सकते हैं या एक अधिक व्यापक इंटरफ़ेस प्रदान कर सकते हैं।
उदाहरण के लिए, आप बराबर आकार वाली वस्तुओं को आवंटित कर सकते हैं, जो इष्टतम आवंटन पैरामीटर बदल सकते हैं। या आप हमेशा एक ही समय में बड़ी मात्रा में वस्तुओं को मुक्त कर सकते हैं, इस मामले में आप free
नहीं चाहते हैं कि वे फैंसी चीजें कर सकें।
memory pools और obstacks पर एक नज़र डालें।
सबसे अधिक संभावना है कि वे स्मृति के एक बड़े ब्लॉक (एक "मेमोरी एरिना") को पूर्व-आवंटित कर रहे हैं जो विखंडन से बचाता है और बेहतर आवंटन प्रदर्शन – BrokenGlass
युप के लिए अनुमति देता है, आप ओएस से संगत स्मृति मिलो के बड़े हिस्से के लिए पूछ सकते हैं। यह सिस्टम दुनिया में काफी आम है। –
हाँ, वे सबसे अधिक संभावना है कि वे मॉलोक के चारों ओर एक रैपर लिखते हैं जो कि सीधे मॉलोक को कॉल करने के बजाय उपयोग करते हैं, जो कुछ मामलों में गति बढ़ाता है, लेकिन ओएस स्तर की सामग्री –