C++ में segmentation fault (सेगमेंटेशन फॉल्ट) क्या है और यह क्यों होता है?
सभी को नमस्ते! मैं C++ में नौसिखिया हूँ और मुझे एक समझ से परे एरर का सामना करना पड़ा। मेरा प्रोग्राम बिना किसी एरर के कंपाइल होता है, लेकिन चलाने पर "Segmentation fault (core dumped)" संदेश के साथ क्रैश हो जाता है। मुझे यह भी नहीं पता कि इसका क्या मतलब है।
यहाँ सरलीकृत कोड है जो मेरे लिए यह समस्या पैदा करता है:
```cpp
#include
using namespace std;
int main() {
int* ptr;
*ptr = 42; // यहाँ क्रैश होता है
cout << *ptr << endl;
return 0;
}
```
मैं बस एक पॉइंटर `ptr` घोषित करता हूँ और उसमें एक वैल्यू लिखने की कोशिश करता हूँ। प्रोग्राम क्यों क्रैश होता है? मैंने सुना है कि यह किसी तरह मेमोरी से संबंधित है, लेकिन मैं विवरण नहीं समझता।
साथ ही, मेरे पास एक ऐरे के साथ एक और उदाहरण है:
```cpp
int arr[5] = {1, 2, 3, 4, 5};
for (int i = 0; i <= 5; i++) {
cout << arr[i] << endl; // अंतिम इटरेशन पर एरर
}
```
यहाँ मैं ऐरे की सीमा से बाहर जा रहा हूँ, लेकिन यह segmentation fault क्यों पैदा करता है, न कि सिर्फ गार्बेज वैल्यू देता है? कृपया समझाएँ कि segmentation fault क्या है, यह किन कारणों से होता है और इसे कैसे ठीक किया जाए।