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

האם ל-C יש אספן אשפה?
האם ל-C יש אספן אשפה?

וִידֵאוֹ: האם ל-C יש אספן אשפה?

וִידֵאוֹ: האם ל-C יש אספן אשפה?
וִידֵאוֹ: Is there Garbage Collection in C and C++? 2024, מאי
Anonim

ג עושה זאת לֹא יש אוֹטוֹמָטִי איסוף זבל . אם אתה מאבד מעקב אחר אובייקט, אתה יש מה שמכונה 'דליפת זיכרון'. הזיכרון עדיין יוקצה לתוכנית כולה, אבל שום דבר לא יוכל להשתמש בו אם איבדת את המצביע האחרון אליו. ניהול משאבי זיכרון הוא דרישת מפתח ב ג תוכניות.

אם לוקחים זאת בחשבון, האם אשפה C נאספה?

C++ לא צריך א אוסף זבל , כי אין לו אַשׁפָּה . ב-C++ המודרני אתה משתמש במצביעים חכמים ולכן אין לך אַשׁפָּה.

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

רק אז, מה זה אוסף אשפה C?

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

איך עושים אספן אשפה?

הדרך הפשוטה ביותר ליישם אספן אשפה היא:

  1. ודא שאתה יכול לאסוף את השורשים העולמיים.
  2. ודא שאתה יכול לעבור את הערימה, למשל. כל ערך בערימה הוא אובייקט שמיישם שיטת Visit שמחזירה את כל ההפניות מאותו אובייקט.
  3. שמור את קבוצת כל הערכים שהוקצו.

מוּמלָץ: