ما هو segmentation fault (خطأ التجزئة) في C++ وكيفية إصلاحه؟
سلام للجميع! لقد بدأت للتو في تعلم لغة C++ وأواجه باستمرار خطأ "Segmentation fault" (أو "Segfault"). البرنامج يتعطل ببساطة، ولا أفهم لماذا. إليك مثال على الكود الخاص بي:
```cpp
#include
using namespace std;
int main() {
int* ptr;
*ptr = 10; // тут происходит segmentation fault
cout << *ptr << endl;
return 0;
}
```
لقد أعلنت عن المؤشر `ptr`، لكنني لم أعطه عنوانًا. عندما أحاول كتابة القيمة 10 في هذا المؤشر، يتعطل البرنامج. لماذا يحدث هذا؟ اعتقدت أن المؤشر هو مجرد متغير يخزن عنوانًا، ويمكنني كتابة رقم فيه.
مثال آخر لا يعمل لدي:
```cpp
#include
using namespace std;
int main() {
int arr[5] = {1, 2, 3, 4, 5};
for (int i = 0; i <= 5; i++) { // خطأ: i <= 5، بينما يجب i < 5
cout << arr[i] << " ";
}
cout << endl;
return 0;
}
```
هنا، البرنامج أحيانًا يتعطل، وأحيانًا يطبع بيانات غير مرغوب فيها (مهملة). سمعت أن