פורסם 2007 בינואר 2818 שנים אממ חשבתי על איך MALLOC בC מקצה את הזיכרון בקריאה ואיך יודעים שקטע מסויים פנוי למשל במקרה כזה:לX מקצים 64BלYמקצים 256Bעושים FREE לX ואז רוצים להקצות Z 64 איך MALLOC יודע למצא את ה64 בטים בהתחלה אם בכלל. תודה..
פורסם 2007 בינואר 2818 שנים אני לא בטוח, אבל נדמה לי שהקצאות זיכרון ב- heap נעשות ע"י מערכת ההפעלה, ולא ע"י התוכנית (לפחות ב- protected mode).
פורסם 2007 בינואר 2818 שנים מחבר אני לא בטוח, אבל נדמה לי שהקצאות זיכרון ב- heap נעשות ע"י מערכת ההפעלה, ולא ע"י התוכנית (לפחות ב- protected mode).אמממ זה לא מה ששאלתי שאלתי , על איך פועל האלגוריתם של ההקצאה בקווים כליים אפילו , לא מי עושה אותו .ז"א איך מתבצע החיפוש וההקצאה עצמה.
פורסם 2007 בינואר 2818 שנים יש מספר שיטות.אחת מהן היא שיטת ה"חברים":מחלקים את הסגמנט שלך לחלקים, כל פעם ל- 2. אם אתה צריך, למשל 60B ויש לך גודל סגמנט של 256B, זה יראה ככה:| 128 | 64 | 64 |ותתן את ה64 הימיניים. ה64 נקראים "חברים" ורק אותם אתה יכול לאחד כדי לקבל שטח גדול יותר.לא ניתן לחבר 2 חלקים שהם לא חברים.אם למשל יש את המצב הבא, כאשר כל אחד מה- 64 מוקצים(יתכן שיש פחות במציאות כמו ה- 60 מקודם).| 64 | 64 | 64 | 64 |ועושים FREE ל2 האמצעים, הם לא יתחברו מכיוון שהם לא חברים.שים לב שיש המון חסרונות לשיטה הזו.תאר לך שאתה צריך 129B - יוקצו כל ה256. מצב כזה נקרא INTERNAL FRAGMENTATION.
פורסם 2007 בינואר 2818 שנים מחבר יש מספר שיטות.אחת מהן היא שיטת ה"חברים":מחלקים את הסגמנט שלך לחלקים, כל פעם ל- 2. אם אתה צריך, למשל 60B ויש לך גודל סגמנט של 256B, זה יראה ככה:| 128 | 64 | 64 |ותתן את ה64 הימיניים. ה64 נקראים "חברים" ורק אותם אתה יכול לאחד כדי לקבל שטח גדול יותר.לא ניתן לחבר 2 חלקים שהם לא חברים.אם למשל יש את המצב הבא, כאשר כל אחד מה- 64 מוקצים(יתכן שיש פחות במציאות כמו ה- 60 מקודם).| 64 | 64 | 64 | 64 |ועושים FREE ל2 האמצעים, הם לא יתחברו מכיוון שהם לא חברים.שים לב שיש המון חסרונות לשיטה הזו.תאר לך שאתה צריך 129B - יוקצו כל ה256. מצב כזה נקרא INTERNAL FRAGMENTATION.איך נקבעים החברים מלחתחילה ניסיתי לקרא קצת בWIKI אבל לא הבנתי עד הסוף אתה יכול להסביר בצורה פשוטה?
פורסם 2007 בינואר 2818 שנים כאלה שמשלימים אחד את השני לחזקה של 2. חברים זה יחס בינארי(רק בין 2 איברים כאלה).
פורסם 2007 בינואר 2818 שנים מחבר כאלה שמשלימים אחד את השני לחזקה של 2. חברים זה יחס בינארי(רק בין 2 איברים כאלה).אבל בדוגמא שהבאת אמרת שאם נעשה FREE ל2 האמצעים הם לא יתחברו אבל ביחד הם 128 והוא חזקה של 2 איך זה ?
פורסם 2007 בינואר 2818 שנים כי הם צריכים גם להיות במקומות מסויימים(תנאי ששכחתי להגדיר אותו בהודעה הקודמת).
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.