2012-07-09 11 views
7

के बीच अंतर दल्विक ढेर में एक स्मृति क्षेत्र आवंटित करने के लिए, अनुप्रयोग सामान्य मॉलोक के बजाय dlmalloc का उपयोग करते हैं, क्यों dlmalloc का उपयोग किया जाता है, और यह malloc से अलग कैसे है। (जैसा कि मुझे पता है, दल्विक वीएम बनाने के दौरान दल्विक ढेर आवंटित करने के लिए, मॉलोक का उपयोग किया जाता है।)मॉलोक और dlmalloc

+0

क्या आपने [स्मृति आवंटन पर विकिपीडिया लेख] पढ़ा है (http://en.wikipedia.org/wiki/C_dynamic_memory_allocation) और इसके अनुभाग dlmalloc पर? – gfour

उत्तर

13

उच्च क्रम बिट यह था कि डाल्विक को अंतर्निहित आवंटक होना आवश्यक था जो डिफ़ॉल्ट मॉलोक-प्रबंधित ढेर से अलग था, इसलिए यह आवंटन कैसे हुआ, इस पर सही नियंत्रण हो सकता था, यह जानकर कि अन्य उपप्रणाली हस्तक्षेप नहीं करेंगे।

जैसा कि यह निकला, dlmalloc एक उचित परिपक्व मौजूदा लाइब्रेरी थी जिसने अलगाव और हुक की आवश्यकता थी। इरादा (जब तक मैंने टीम छोड़ दी थी) उस बिंदु पर हम अंततः इसे और अधिक bespoke के साथ बदल देंगे, लेकिन यह उस विशेष डुबकी लेने के लिए पर्याप्त दबाव नहीं बन गया।

dlmalloc और malloc के बीच विस्तृत अंतर के रूप में: dlmalloc पारंपरिक libc malloc API का एक विशिष्ट कार्यान्वयन है, जबकि "malloc" per se एक विशेष कार्यान्वयन के लिए विशिष्ट नहीं है। लेकिन अगर आपको विशिष्ट मिला, तो भी मुझे संदेह है कि मैं वैसे भी "कोड पढ़ना" से कुछ और सुझाव दे सकता हूं।

+1

शानदार जवाब, यह सोचकर कि क्या आप कुछ स्पष्टीकरण दे सकते हैं - डीएलएमएलओसी * एंड्रॉइड पर * मॉलोक के रूप में उपयोग किया जाता है, सामान्य उपयोग के लिए और दल्विक के लिए प्रत्येक प्रक्रिया में अलग-अलग पूल बनाए रखता है, या दाल्विक उपयोग dlmalloc करता है जबकि अन्य मॉलोक कॉल (jni lib या जो भी हो) कुछ और का उपयोग कर खत्म हो? –

संबंधित मुद्दे