संभव डुप्लिकेट:
C programming : How does free know how much to free?कैसे मुक्त() जानते हैं कि कितनी मेमोरी को हटाना है?
जब सी में प्रोग्रामिंग, मैं अक्सर malloc()
का उपयोग स्मृति को आबंटित करने और free()
इसे जारी करने:
MyObject* objArr= (MyObject*) malloc(sizeof(MyObject)*numberOfObjects);
/** Do stuff **/
free(objArr);
free()
कैसे पता कितनी स्मृति करता है deallocate करने के लिए? क्या malloc()
पॉइंटर्स को याद रखने के लिए कहीं भी एक टेबल बनाते हैं और प्रत्येक सूचक ने कितनी मेमोरी की ओर इशारा किया है?
यदि ऐसा है, तो क्या मैं free()
विफल होगा अगर मैं सूचक का नाम बदलूं? उदा .:
MyObject* objArr= (MyObject*) malloc(sizeof(MyObject)*numberOfObjects);
MyObject* newPtr= objArr;
free(newPtr); /** Does this fail? **/
अगर मैं सूचक को बढ़ा देते हैं और फिर free()
चलाने क्या होगा? उदा .:
MyObject* objArr= (MyObject*) malloc(sizeof(MyObject)*numberOfObjects);
newPtr++;
free(newPtr); /** What happens now? **/
यह स्मृति का एक अतिरिक्त हिस्सा पुनःआवंटन सिर्फ मूल सरणी के अंत होगा?
का डुप्लिकेट http://stackoverflow.com/questions/1518711/c-programming-how-does-free-now-how-much-to- फ्री – codaddict