Avatar ·

ما هو 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; } ``` هنا، البرنامج أحيانًا يتعطل، وأحيانًا يطبع بيانات غير مرغوب فيها (مهملة). سمعت أن