شما هنوز به سیستم وارد نشده اید.

اطلاعیه

#1 2021-07-22 23:36:22

mr-noip
عضو
ثبت شده: 2018-07-13
ارسال ها: 53

خطای زمان اجرا در زبان سی Segmentation fault (core dumped)

سلام و عرض ادب.
لطفا کد زیر رو بررسی بفرمایید :

#include<stdio.h>

int main(){

    int arr[1];

    for(int i = 1 ; i <= 5555;i++)
    {

         if (arr[i] == '\0')
         {
               printf("\n");
         }
        printf("%c" , arr[i]);

    } 
}

بنده به این وسیله میخوام به قسمتهای دیگر حافظه دسترسی داشته باشم و به صورت کاراکتر اونها رو چاپ کنم.اما وقتی عدد i بزرگ تر میشه با دو تا مشکل برخورد میکنم که معمولا اون مشکل پیام زیر :

Segmentation fault (core dumped)

یا خطای زیر هست :

Bus error (core dumped)

ممنون میشم اگر بفرمایید مشکل کجاست؟


شروعی جدید smile

آفلاین

#2 2021-07-23 14:45:17

mzd245
Moderator
از : تهران
ثبت شده: 2020-03-24
ارسال ها: 21

پاسخ: خطای زمان اجرا در زبان سی Segmentation fault (core dumped)

درود.
در زبان C، شما با خارج شدن از محدوده یک آرایه صرفا باعث Undefined Behavior یا به اختصار UB می شید که گاهی اوقات ممکن هست برنامه به درستی به شما پاسخ بده، یا در حالتی سبب crash برنامه می شه که مثل شما به Segmentation Fault بر می خورید. در واقع کرنل به برنامه شما سیگنالی ارسال می کنه به اسم SIGSEGV و همون جا برنامه بسته می شه. ممکنه در assignmentهای محدودتر (برای مثال نهایتا دو خانه بیشتر از محدوده آرایه) به این مشکل نخورید، ولی باید در نظر بگیرید که این کار تنها یک UB هست، نه دسترسی.

آفلاین

#3 2021-07-23 16:53:37

mr-noip
عضو
ثبت شده: 2018-07-13
ارسال ها: 53

پاسخ: خطای زمان اجرا در زبان سی Segmentation fault (core dumped)

mzd245 نوشته است که:

درود.
در زبان C، شما با خارج شدن از محدوده یک آرایه صرفا باعث Undefined Behavior یا به اختصار UB می شید که گاهی اوقات ممکن هست برنامه به درستی به شما پاسخ بده، یا در حالتی سبب crash برنامه می شه که مثل شما به Segmentation Fault بر می خورید. در واقع کرنل به برنامه شما سیگنالی ارسال می کنه به اسم SIGSEGV و همون جا برنامه بسته می شه. ممکنه در assignmentهای محدودتر (برای مثال نهایتا دو خانه بیشتر از محدوده آرایه) به این مشکل نخورید، ولی باید در نظر بگیرید که این کار تنها یک UB هست، نه دسترسی.

بسیار ممنونم.


شروعی جدید smile

آفلاین

پانوشت انجمن

پشتیبانی توسط تیم آرچ لینوکس ایران و نیرو گرفته با FluxBB میزبانی توسط MahanCloud