C++/זיכרון דינמי: הבדלים בין גרסאות בדף

תוכן שנמחק תוכן שנוסף
בונגולים (שיחה | תרומות)
הוספת תבנית תוכן ותיקוני כיווניות
שורה 1:
{{C++‎}}
== מהי הקצאת זיכרון דינמית ==
;הקצאת זיכרון דינמית: היא פעולה של הקצאת זיכרון בעת הרצת התוכנה. פעולה זו מבוצעת בדרך כלל כאשר גודל הזיכרון הנדרש אינו ידוע מראש לפני הרצת התוכנה ויתברר רק לאחר קבלת קלט מהמשתמש, קריאת תוכן של קובץ כלשהו וכדומה.
 
== כלים להקצאת זיכרון דינאמית ב-ב־C++‎C ==
מאחר ובשפת C++‎C יש תמיכה מלאה בכל הספריות הסטנדרטיות של C,
נתן להשתמש בפונקציות של C כגון malloc ו-free, אך הדבר אינו מומלץ,
כיוון שב-שב־C++‎C יש כלים מתקדמים יותר.
ב-ב־C++‎C מקצים זיכרון באופן דינמי באמצעות אופרטור new.
ישנה צורה בשפת C++‎C המאפשרת הקצאה דינמית של משתנה בודד וכן מערך.
=== משתנה בודד ===
*תקציר:
<div style="text-align:left; direction:ltr;"><pre>type *variable=new type;</pre></div>
* הסבר:
הקצאה ל- variableל־variable מסוג מצביע ל-typeל־type מקום בזיכרון מסוג של type.
*דוגמא:
<div align="left" dir="ltr" >
שורה 22 ⟵ 23:
<div style="text-align:left; direction:ltr;"><pre>type *array=new type[array_length];</pre></div>
*הסבר:
הקצאה ל-arrayל־array מסוג מצביע ל-typeל־type מקום בזיכרו שהוא מערך של ערכים של type באורך array_length.
*דוגמא:
<div align="left" dir="ltr" >
שורה 69 ⟵ 70:
 
== שינוי גודל הזיכרון ==
בשפת C פעולה זו התבצעה על ידי פונקציית realloc. ב-ב־C++&lrm;C אין אופרטור מיוחד לצורך זה. מה שנתן לעשות זה ליצור מקום חדש בזיכרון על ידי new, להעתיק את התוכן הישן למקום החדש ולאחר מכן לשחרר את הזיכרון הישן שהוקצה בעזרת delete.
*דוגמא:
<div style="text-align:left; direction:ltr;"><pre>