malloc
का उपयोग करने से mmap
(MAP_PRIVATE और MAP_ANONYMOUS के साथ) का उपयोग कर स्मृति आवंटित करने के नुकसान क्या हैं? समारोह दायरे में डेटा के लिए, मैं ढेर स्मृति वैसे भी और इसलिए का प्रयोग करेंगे नहीं malloc.
क्या होगा यदि मैं malloc के बजाय mmap का उपयोग कर स्मृति आवंटित करता हूं?
एक नुकसान यह है कि मन में आता है इस तरह के पेड़ और जुड़ा हुआ सूची के रूप में गतिशील डेटा संरचनाओं, जहाँ आप अक्सर आवंटित और डेटा के छोटे-छोटे टुकड़ों पुनःआवंटन करने की आवश्यकता के लिए है । mmap
का उपयोग करना दो कारणों से महंगा होगा, एक 4096 बाइट्स की ग्रैन्युलरिटी आवंटित करने के लिए और दूसरा सिस्टम कॉल करने की आवश्यकता के लिए।
लेकिन अन्य परिदृश्यों में, आपको लगता है कि malloc
mmap
से बेहतर है? दूसरा, क्या मैं गतिशील डेटा संरचनाओं के लिए mmap
के नुकसान का अधिक महत्व दे रहा हूं?
mmap
malloc
मैं के बारे में सोच सकते हैं के ऊपर का एक लाभ यह है कि स्मृति तुरंत, ओएस के लिए वापस आ जाता है जब आप munmap
करते हैं, जबकि malloc/free
के साथ, मैं डेटा खंड को तोड़ने बिंदु है कभी नहीं लौटे uptil स्मृति लगता है, लेकिन reusage के लिए रखा है ।
malloc आपके लिए mmap कॉल करेगा, यदि आवश्यक हो ... बस मॉलोक से चिपके रहें। – Macmade
एक और नुकसान यह है कि यदि आप अपने कोड को 'mmap' पर कॉल के साथ कूड़े हैं, तो यह कम पोर्टेबल बन जाता है। –
और जीवन को और जटिल होने की आवश्यकता क्यों है? –