स्मृति रिसाव तब होता है, जब स्मृति का एक टुकड़ा जो पहले प्रोग्रामर द्वारा आवंटित किया गया था। फिर इसे प्रोग्रामर द्वारा ठीक से डील नहीं किया जाता है। वह स्मृति अब प्रोग्राम द्वारा उपयोग में नहीं है। अतः वह स्थान अकारण आरक्षित है। इसलिए इसे मेमोरी लीक कहा जाता है।
स्मृति रिसाव के लिए, स्मृति का कुछ ब्लॉक बर्बाद हो सकता है। यदि सिस्टम में पर्याप्त मेमोरी है, तो उस स्थिति में भी यह प्रदर्शन को धीमा कर सकता है।
उदाहरण
void my_func() { int *data = new int; *data = 50; }
यहाँ समस्या यह है कि *डेटा पॉइंटर कभी डिलीट नहीं होता है, इसलिए मेमोरी बर्बाद हो जाती है।
उदाहरण
#include <stdio.h> main(void) { auto int my_fun(); my_fun(); printf("Main Function\n"); int my_fun() { printf("my_fun function\n"); } printf("Done"); }
आउटपुट
my_fun function Main Function Done