अंतिम अद्यतन:2026-10-12
C++ memory leak detection¶
C++那些事 का memory कैसे detect करें¶
हम C/C++ code लिखते समय memory की समस्याएँ हर जगह रहती हैं, चाहे काम हो या interview, memory का topic हमेशा साथ चलता है।
आज एक उदाहरण से Step by Step valgrind से C++ memory detection करना सीखते हैं।
तीन समस्याओं का simulation:
- Memory release की समस्या का detection
- Write overflow detection
- Read overflow detection
आप सीखेंगे:
- इन तीनों समस्याओं का पता कैसे लगाएँ
- gdb + valgrind को साथ मिलकर debug करने में कैसे उपयोग करें
साथ चर्चा करने के लिए स्वागत है।
1. उदाहरण से शुरुआत¶
नीचे दिए code को देखिए, हमें कई समस्याएँ दिखेंगी:
- strcpy unsafe है, ठीक कितनी memory size है, boundary पार हो सकती है
- print के समय msg का access boundary के बाहर
- Destructor ने memory release नहीं की
बिल्कुल वैसा ही है जैसा कभी आपने खुद code लिखा हो, हाहा।
इस section में इन समस्याओं का पता लगाएँगे।
class Message {
private:
char *msg;
public:
Message(const char *text) {
msg = new char[3];
std::strcpy(msg, text);
}
void printOutOfRange() {
std::cout << msg[5] << std::endl;
}
~Message() {
}
};
int main() {
Message message("hello");
message.printOutOfRange();
return 0;
}
2. valgrind¶
valgrind इंस्टॉल करना:
अन्य systems के इंस्टॉलेशन के लिए official address देखें:
3. उपयोग¶
सबसे पहले compile करते समय debug, -g उपयोग करने की सलाह है, इससे code की कौन सी line में समस्या है पता चल सकता है।
फिर हम execute करते हैं:
हमें valgrind की दी हुई जानकारी मिलती है:

इस समय, ऊपर हम कुछ समस्याएँ देख सकते हैं:
- Invalid write
हुआ val_test.cc::11 में
- Invalid read
हुआ val_test.cc:10 में
- Memory leak
1 allocs, 0 frees, 3 bytes allocated.
यह जानकारी हमें तेज़ी से यह पता लगाने देती है कि code की कौन सी line में समस्या है।
4. gdb डीबगिंग¶
जब हम इसमें --vgdb-error=0 जोड़ देते हैं, तो हम बहुत आसानी से code debug कर सकते हैं, एक तरफ debug करते हुए, दूसरी तरफ देखते हुए कि कहाँ समस्या है।

इसके बाद, हम gdb से attach करते हैं
ऊपर वाली target line को gdb में paste करें, फिर continue करें, हम संगत line का code और valgrind की आगे की output देख सकते हैं।


इस section में memory समस्याओं का व्यवहार दिखाया गया, अगर आपकी मदद किया हो तो share करने के लिए स्वागत है।