האם זיכרון מוקצה פנוי?

תוכן עניינים:

האם זיכרון מוקצה פנוי?
האם זיכרון מוקצה פנוי?
Anonim

הזיכרון המוקצה באמצעות הפונקציות malloc ו-calloc אינו מוקצה לבד. לפיכך נעשה שימוש בשיטת free, בכל פעם שמתקיימת הקצאת זיכרון דינמית. זה עוזר להפחית את בזבוז הזיכרון על ידי שחרורו.

איך הזיכרון שהוקצה הופך בחינם?

ב-C, פונקציית הספרייה malloc משמשת להקצאת גוש זיכרון בערימה. התוכנית ניגשת לגוש הזיכרון הזה באמצעות מצביע שמחזיר malloc. כאשר הזיכרון אינו נחוץ עוד, המצביע מועבר ל-free אשר מקצה את הזיכרון כך שניתן יהיה להשתמש בו למטרות אחרות.

מה קורה אם לא תפנו זיכרון שהוקצה?

ברוב המקרים, אין טעם לבטל את ההקצאה של memory לפני היציאה מהתוכנית. מערכת ההפעלה תדרוש אותה מחדש בכל מקרה. Free ייגע ותדפד בחפצים המתים; מערכת ההפעלה לא. תוצאה: היזהר עם "גלאי דליפות" שסופרים הקצאות.

האם הקצאת זיכרון יקרה?

מדידה נאיבית של עלות ההקצאה והשחרור של גושי זיכרון גדולים תסיק שזה עולה בערך 7.5 μs עבור כל הקצאה/זוג חינם. עם זאת, ישנן שלוש עלויות נפרדות ל-MB עבור הקצאות גדולות.

האם ניתן לשחרר מחדש את שטח הזיכרון שהוקצה אם כן איך?

פונקציית realloc מקצה, מקצה מחדש או משחררת את גוש הזיכרון שצוין על ידי old_blk בהתבסס על הכללים הבאים: אם old_blk הוא NULL, גוש זיכרון חדש בגודל בתים הואמוּקצֶה. אם הגודל הוא אפס, הפונקציה החופשית נקראת כדי לשחרר את הזיכרון שעליו הצביע old_blk.

מוּמלָץ: