זיכרון מחסנית לעומת ערימה
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-C של Coddy. שיעור 31 מתוך 63.
כאשר תוכנית C שלך פועלת, היא משתמשת בשני אזורי זיכרון נפרדים: המחסנית והערימה. הבנת ההבדל בין אזורי הזיכרון האלה חיונית לתכנות יעיל ב-C, במיוחד בעבודה עם מצביעים והקצאה דינמית של זיכרון.
המחסנית משמשת להקצאת זיכרון סטטית. כאן מאוחסנים המשתנים המקומיים שלך, הפרמטרים של הפונקציות ומידע על קריאות לפונקציות. המערכת מנהלת את המחסנית באופן אוטומטי — כשאתה מצהיר על משתנה מקומי, מוקצה זיכרון במחסנית, וכשהמשתנה יוצא מטווח החיים שלו, הזיכרון הזה מתפנה באופן אוטומטי.
void function() {
int x = 10; // מוקצה במחסנית
char arr[100]; // מוקצה גם במחסנית
// הזיכרון משתחרר אוטומטית כשהפונקציה מסתיימת
}הערימה משמשת להקצאת זיכרון דינמית. זהו מאגר זיכרון גדול יותר שאפשר לבקש במהלך הרצת התוכנית.
בניגוד למחסנית, הערימה דורשת ניהול ידני — עליך לבקש זיכרון במפורש ולאחר מכן לשחרר אותו כשתסיים להשתמש בו. כך יש לך יותר שליטה, אך גם יותר אחריות.
ההבדל המרכזי הוא אופן הניהול: זיכרון המחסנית מנוהל באופן אוטומטי ומוגבל בגודלו, בעוד שזיכרון הערימה מנוהל באופן ידני וגדול בהרבה. בשיעורים הבאים תלמד איך לעבוד עם זיכרון הערימה באמצעות פונקציות כמו malloc() ו־free().
נסו בעצמכם
השיעור הזה לא כולל אתגר קוד.
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
1יסודות המצביעים
מהו מצביע?הכרזה על מצביעיםאופרטור לקיחת הכתובת (&)אופרטור ביטול ההפניה (*)מצביעי NULLסיכום: יסודות המצביעים2מצביעים ומערכים
שמות מערכים כמצביעיםאיברי מערך ומצביעיםאריתמטיקה של מצביעיםהשוואת מצביעיםסיכום: מעבר על מערך באמצעות מצביעים5מצביעים ופונקציות
העברה לפי ערךהעברת מצביעים לפונקציותשינוי משתנים באמצעות מצביעיםדוגמה קלאסית: החלפההעברת מערכים לפונקציותחזרה: ארגומנטים של מצביעי פונקציה3מערכי תווים ומחרוזות
מחרוזות כמערכי charתו הסיום nullקלט מחרוזת באמצעות scanfשימוש ב־strlen()שימוש ב־strcpy()שימוש ב־strcat()שימוש ב־strcmp()סיכום: פונקציות מחרוזת בסיסיות6ניהול זיכרון
זיכרון מחסנית לעומת ערימההקצאה דינמית - malloc()שימוש ב-sizeof() להקצאהבדיקת כישלון בהקצאהשחרור זיכרון באמצעות free()הקצאה באמצעות calloc()סיכום: מערך דינמיתרגלו בעצמכם: קומפיילר C אונליין