मान लीजिए कि हम आकार n के स्मृति ब्लॉक के लिए एक malloc अनुरोध करते हैं जहां 2^के! = N के लिए 0> n। मॉलोक हमें उस अनुरोधित मेमोरी ब्लॉक के लिए स्थान देता है लेकिन पृष्ठ से बने रहने वाले बफर को कैसे नियंत्रित किया जाता है। मैंने पढ़ा है पृष्ठ आमतौर पर स्मृति की ब्लॉक हैं जो दो की शक्तियां हैं।क्या होता है जब स्मृति ब्लॉक के लिए अनुरोध होता है जो 2 की शक्ति नहीं है?
विकी राज्यों निम्नलिखित:
Like any method of memory allocation, the heap will become fragmented; that is,
there will be sections of used and unused memory in the allocated
space on the heap. A good allocator will attempt to find an unused area
of already allocated memory to use before resorting to expanding the heap.
तो मेरे सवाल है कि कैसे इस पर नज़र रखी है?
संपादित करें: malloc का उपयोग करते समय अप्रयुक्त स्मृति को ट्रैक किया जाता है?
ट्रैक कैसे किया जाता है? –
@ मार्सेलो कैंटोस: उदाहरण के लिए मैं malloc (5) के लिए अनुरोध करता हूं और 8 बाइट्स का एक पृष्ठ प्राप्त किया जाता है। स्मृति के अतिरिक्त 3 बाइट्स अप्रयुक्त के रूप में कैसे ट्रैक किया जाता है। मान लीजिए कि अगला अनुरोध मॉलोक (3) है, क्या यह इसे इस अप्रयुक्त स्थान से आवंटित करेगा? –
मॉलोक को बाद में फ्रीिंग को सक्षम करने के लिए आवंटित ब्लॉक के आकार का ट्रैक रखना है। इस मामले में आकार 8 होगा। यह सिर्फ मॉलोक के कॉलर को नहीं बताया गया है। –