Avatar ·

ما هو segmentation fault (خطأ التجزئة) في C++ ولماذا يحدث؟

مرحباً بالجميع! أنا مبتدئ في 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، وما أسبابه، وكيف يمكن