עבור לתוכן

Eror בזמן ריצה ב- c++

Featured Replies

פורסם

שלום,

אם משהו יוכל לפענח את הודעת השגיאה שמתקבלת לאחר קליטת חלק מהקלט

"Unhandled exception hw3_1.exe: 0*C000005: Access Violation" :nixweiss:

תודה....

פורסם

אני אנחש שאתה מנסה לגשת לזיכרון שלא שייך לתוכנית שלך, אבל זה רק ניחוש. אם תעלה את הקוד לאתר אני אוכל להגיד לך בוודאות.

פורסם

אם זה קורה בזמן debugging, אז אפשר לראות בדיוק באיזו שורה זה קורה. (וכמו שנאמר - זה נראה כמו דריכה על זיכרון - ובמקרה הכי נפוץ - שימוש במצביע לא מאותחל)

פורסם
  • מחבר

אכן אני יודעת בדיוק על איזה שורה מדובר. ואין לי מושג מה הבעיה בה...

sum+= _array->calculate_compensations();

(הסוגריים שיייכים לצד ימין של השורה פשוט זה לא מסתדר..)

הפו' calculate_compensations מחזירה double וגם sum  double

תודה רבה

פורסם

תבדוק ש- i גדול מ- 0 וקטן מאורך המערך(ממש).

פורסם

וההסבר:

access violation (או segmentation fault) אומר שניסית לגשת בתכנית למקום אסור בזכרון (כלומר מקום שלא הוקצה בשבילך).

איך זה יכול לקרות? אם אני מגדיר מערך בגודל 10, ומנסה לגשת אליו למקום ה-11, אז במקרה הטוב מערכת ההפעלה תעלה על זה שניגשת למקום לא חוקי, ותצעק עלייך (בצורה הנ"ל). במקרה הרע, מערכת ההפעלה לא תעלה על זה (כי, נניח, התכנית תיגש למקום שכן מותר לה לגשת אליו, אבל לא שייך לאותו מערך), ואז תתרחש דריכת זיכרון, כלומר תדרכי על מידע שהתכנית צריכה, וזה יהיה לא נעים.

חוץ מזה, אם זו לא הבעיה, את צריכה לוודא ש-array באמת מאותחל ומצביע לאובייקט קיים.

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים