मेमोरी लीक तब होती है जब प्रोग्रामर द्वारा डायनामिकली अलोकेट की गई मेमोरी को ठीक से डीअलोकेट (मुक्त) नहीं किया जाता। यह मेमोरी प्रोग्राम द्वारा उपयोग नहीं की जाती, फिर भी रिज़र्व रहती है, जिससे सिस्टम संसाधन बर्बाद होते हैं।
कारण और प्रभाव
- मेमोरी लीक से सिस्टम की उपलब्ध मेमोरी कम होती है।
- पर्याप्त मेमोरी होने पर भी प्रदर्शन धीमा हो सकता है।
- लंबे समय तक चलने वाले प्रोग्राम्स (सर्वर, डेमन) में यह गंभीर समस्या बन सकती है।
उदाहरण 1: C++ में new बिना delete के
void my_func() {
int *data = new int;
*data = 50;
// data को delete नहीं किया गया - मेमोरी लीक!
}
उदाहरण 2: C में malloc बिना free के
#include <stdlib.h>
void leak_example() {
int *ptr = malloc(sizeof(int) * 100);
// ptr को free() नहीं किया गया
}
रोकथाम
- हर
malloc/calloc/reallocके लिएfreeकरें। - C++ में
newके लिएdelete,new[]के लिएdelete[]उपयोग करें। - स्मार्ट पॉइंटर्स (
std::unique_ptr,std::shared_ptr) का उपयोग करें (C++11+)। - वैलग्रिंड (Valgrind) जैसे टूल्स से लीक डिटेक्ट करें।
दूसरा उदाहरण (नेस्टेड फंक्शन - असंबंधित)
मूल लेख में एक नेस्टेड फंक्शन उदाहरण दिया गया था जो मेमोरी लीक से असंबंधित है। उसे यहां नहीं दिखाया गया।