עבור לתוכן
View in the app

A better way to browse. Learn more.

HWzone

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

cpp- פוינטרים

Featured Replies

פורסם

http://www.cs.bgu.ac.il/~spl121/CppPointers

אני מנסה לכתוב תוכנית בסי פלוס פלוס עם מצביעים ונתקל בכמה בעיות. אשמח אם תוכלו להסתכל בדוגמא הלפני אחרונה בקישור המצורף (בו הגדירו מצביע עם ערך ומצביע נוסף שמצביע לאותו מקום. מה היא הבעייתיות בקוד? אשמח להסבר מלא כולל דרך חלופית לטפל בעניין.

בתוכנית שכתבתי עשיתי אותו הדבר. הכנתי רשימה דו מקושרת עם מצביע פי1 שמצביע על תחילת הרשימה. לאחר מכן הגדרתי מצביע פי2 נוסף שיצביע גם על תחילת הרשימה ע"י פי1=פי2. ובמהלך התוכנית קידמתי תמיד רק אם פי2 ולבסוף עשתי מחיקה (דליט) על פי1. האם יש כאן בעיה?

פורסם
  • מחבר

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){

האם השימוש במצביעים, כולל שליחתם לפונקציה נכונים?

פורסם

קודם כל, ערוך את ההודעה ושים את הקוד בתוך טג קוד, במקום להצמיד לשמאל.

אני מנסה לכתוב תוכנית בסי פלוס פלוס עם מצביעים ונתקל בכמה בעיות. אשמח אם תוכלו להסתכל בדוגמא הלפני אחרונה בקישור המצורף (בו הגדירו מצביע עם ערך ומצביע נוסף שמצביע לאותו מקום. מה היא הבעייתיות בקוד? אשמח להסבר מלא כולל דרך חלופית לטפל בעניין.

כמו שכתוב בכותרת, זה נקרא Dangling Pointer. הבעיה כאן היא שכשעושים delete אז המצביע לא נמחק, כלומר הוא עדיין מצביע לאותו מקום. p עכשיו מצביע לאותו מקום בזכרון, רק שהמקום הזה לא מוקצה לשום דבר. במקרה הטוב לא יקרה שום דבר, אבל במקרה הרע מערכת ההפעלה תשתמש בזכרון הזה עבור הקצאה אחרת, ואז בעצם תהיה לך דריסת זכרון.

בתוכנית שכתבתי עשיתי אותו הדבר. הכנתי רשימה דו מקושרת עם מצביע פי1 שמצביע על תחילת הרשימה. לאחר מכן הגדרתי מצביע פי2 נוסף שיצביע גם על תחילת הרשימה ע"י פי1=פי2. ובמהלך התוכנית קידמתי תמיד רק אם פי2 ולבסוף עשתי מחיקה (דליט) על פי1. האם יש כאן בעיה?

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

ארכיון

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

דיונים חדשים

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.