פורסם 2011 בנובמבר 1914 שנים http://www.cs.bgu.ac.il/~spl121/CppPointersאני מנסה לכתוב תוכנית בסי פלוס פלוס עם מצביעים ונתקל בכמה בעיות. אשמח אם תוכלו להסתכל בדוגמא הלפני אחרונה בקישור המצורף (בו הגדירו מצביע עם ערך ומצביע נוסף שמצביע לאותו מקום. מה היא הבעייתיות בקוד? אשמח להסבר מלא כולל דרך חלופית לטפל בעניין.בתוכנית שכתבתי עשיתי אותו הדבר. הכנתי רשימה דו מקושרת עם מצביע פי1 שמצביע על תחילת הרשימה. לאחר מכן הגדרתי מצביע פי2 נוסף שיצביע גם על תחילת הרשימה ע"י פי1=פי2. ובמהלך התוכנית קידמתי תמיד רק אם פי2 ולבסוף עשתי מחיקה (דליט) על פי1. האם יש כאן בעיה?
פורסם 2011 בנובמבר 1914 שנים מחבר 1. כמו כן, אשמח אם מישהו המבין בcpp יוכל לבדוק האם יש בעייתיות בקטע הקוד המצורף... (linelist מחלקה כלשהי שהגדרתי..LineList* headResult = 0;LineList* headTemp=0;LineList* temp;LineList* resultList = new LineList(0,0); headResult=resultList;temp = new LineList(0,0); headTemp=temp;mergeLists(headResult, headTemp); LineList* mergeLists(LineList* resultList, LineList* tmpList){האם השימוש במצביעים, כולל שליחתם לפונקציה נכונים?
פורסם 2011 בנובמבר 1914 שנים קודם כל, ערוך את ההודעה ושים את הקוד בתוך טג קוד, במקום להצמיד לשמאל.אני מנסה לכתוב תוכנית בסי פלוס פלוס עם מצביעים ונתקל בכמה בעיות. אשמח אם תוכלו להסתכל בדוגמא הלפני אחרונה בקישור המצורף (בו הגדירו מצביע עם ערך ומצביע נוסף שמצביע לאותו מקום. מה היא הבעייתיות בקוד? אשמח להסבר מלא כולל דרך חלופית לטפל בעניין.כמו שכתוב בכותרת, זה נקרא Dangling Pointer. הבעיה כאן היא שכשעושים delete אז המצביע לא נמחק, כלומר הוא עדיין מצביע לאותו מקום. p עכשיו מצביע לאותו מקום בזכרון, רק שהמקום הזה לא מוקצה לשום דבר. במקרה הטוב לא יקרה שום דבר, אבל במקרה הרע מערכת ההפעלה תשתמש בזכרון הזה עבור הקצאה אחרת, ואז בעצם תהיה לך דריסת זכרון.בתוכנית שכתבתי עשיתי אותו הדבר. הכנתי רשימה דו מקושרת עם מצביע פי1 שמצביע על תחילת הרשימה. לאחר מכן הגדרתי מצביע פי2 נוסף שיצביע גם על תחילת הרשימה ע"י פי1=פי2. ובמהלך התוכנית קידמתי תמיד רק אם פי2 ולבסוף עשתי מחיקה (דליט) על פי1. האם יש כאן בעיה?לא, כי p1 ו-p2 כבר לא מצביעים לאותו דבר. הבעיה קיימת רק כאשר אתה מוחק מצביע ואז משתמש בו.
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.