क्या स्थानीय चर की मेमोरी उसके scope के बाहर उपलब्ध हो सकती है?
सभी को नमस्कार! मैंने अभी C++ सीखना शुरू किया है और एक अजीब व्यवहार देखा। मैंने एक function लिखा जो स्थानीय चर का pointer लौटाता है:
```cpp
int* getPointer() {
int x = 42;
return &x;
}
int main() {
int* ptr = getPointer();
std::cout << *ptr << std::endl; // 42 प्रिंट करता है
// ... बाद में ...
std::cout << *ptr << std::endl; // कचरा प्रिंट कर सकता है
}
```
पहला आउटपुट काम करता है — मुझे 42 मिलता है। लेकिन मैंने पढ़ा है कि ऐसा नहीं करना चाहिए, क्योंकि x एक स्थानीय चर है, और function से बाहर निकलने पर इसकी मेमोरी मुक्त हो जाती है। हालांकि, कोड compile होता है और काम करता है! क्यों? और वास्तव में मेमोरी के साथ क्या होता है? क्या compiler किसी तरह मान को संरक्षित कर सकता है या यह सिर्फ संयोग है? अगर मुझे pointer लौटाना है तो function से डेटा सही तरीके से कैसे लौटाऊं?
पहले से धन्यवाद स्पष्टीकरण के लिए!
<<>>
कोड "काम" क्यों करता है और खतरा क्या है
आप एक क्लासिक dangling pointer उदाहरण का सामना कर रहे हैं।