1) गतिशील स्मृति के हैंडलिंग संकलक द्वारा नहीं किया जाता है:
यहाँ क्यों स्मृति में दो बार अपरिभाषित है मुक्त कराने के लिए है। रन-टाइम पुस्तकालय हैं जो इसका ख्याल रखते हैं। उदाहरण के लिए। : glibc malloc और free जैसे एपीआई प्रदान करता है, जो आंतरिक रूप से ढेर क्षेत्र को संभालने के लिए सिस्टम कॉल (sys_brk) बनाता है।
2) एक ही स्मृति को दो बार मुक्त करना इस तरह की स्थिति को संदर्भित करता है: मान लें कि आपके पास char * cptr है;
आप स्मृति का उपयोग करते हुए स्मृति आवंटित करते हैं: cptr = (char *) malloc (SIZE);
अब, जब आपको अब इस मेमोरी की आवश्यकता नहीं है, तो आप इसका उपयोग करके इसे मुक्त कर सकते हैं: मुफ्त (सीपीटीआर);
अब यहां क्या होता है सीपीयू द्वारा इंगित स्मृति स्मृति उपयोग के लिए नि: शुल्क है।
मान लीजिए कि कार्यक्रम में बाद के समय पर आप फिर से एक मुफ्त (सीपीटीआर) कहते हैं, तो यह मान्य स्थिति नहीं है। यह परिदृश्य जहां आप दो बार एक ही मेमोरी को मुक्त कर रहे हैं, उसे "स्मृति दो बार मुक्त करने" के रूप में जाना जाता है।
जब आप एक शून्य सूचक को मुक्त करते हैं तो कोई स्मृति मुक्त नहीं होती है। यदि आप दो बार * गैर-शून्य * पॉइंटर मुक्त करते हैं, तो स्मृति दो बार मुक्त हो जाती है, और यह एक समस्या है। – jalf