Menu
Coddy logo textTech

האופרטורים new ו-delete

שיעור 11 מתוך 14 בקורס מצביעים ב-C++ של Coddy.

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

הקצאת זיכרון דינמית מאפשרת להקצות זיכרון בזמן הריצה. פירוש הדבר שאינך צריך להצהיר על משתנים ולאתחל אותם לפני שהתוכנית מתחילה כשאתה משתמש במצביעים; אנחנו יכולים להקצות מקום בזיכרון עבור משהו שישמש בהמשך.

לשם כך, אנחנו משתמשים במילת המפתח new. 

int *ptr; // הכרזה על מצביע
// הקצאת זיכרון עבור 1 int:
ptr = new int; // ptr מצביע על הזיכרון הזה

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

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

int *ptr;
ptr = new int;
*ptr = 10;

cout << "*ptr = " << *ptr << endl;
delete ptr; // שחרור הזיכרון שהוקצה

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

quiz iconבחנו את עצמכם

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

quiz iconבחנו את עצמכם

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

quiz iconבחנו את עצמכם

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

challenge icon

אתגר

קל

הקצה זיכרון באופן דינמי לשלושה מספרים שלמים באמצעות המצביעים ptrA, ptrB ו-ptrC. השתמש בשלושת המספרים השלמים שניתנו כארגומנטים של הפונקציה, והגדר את הערכים בכתובות שעליהן מצביעים המצביעים כך שיהיו שווים למספרים בהתאמה. את המספר השלם הראשון ל-ptrA, את המספר השלם השני ל-ptrB ואת המספר השלם האחרון ל-ptrC, ולבסוף הדפס את הערכים שאליהם מצביעים כל המצביעים לאחר ביטול הפניה, כשהם מופרדים ברווח

אין לכתוב את הפונקציה <i>main()</i>

נסו בעצמכם

#include <iostream>

using namespace std;

void dynamicMemory(int a, int b, int c) {
    // כתבו כאן את הקוד שלכם
}

// אל תכתבו את הפונקציה main()

כל השיעורים ביחידה מצביעים ב-C++

תרגלו בעצמכם: קומפיילר C++ אונליין