הלוואי והבעיה של הקצאת זכרון היתה כל כך פשוטה כמו שאתה מתאר אותה ו"כל מתכנת C" היה יודע לעשות אותה. אני לא צריך להצביע לכמות התוכנות שסובלות מזליגת זכרון כי הן לא טורחות לשחרר את הזכרון שהן דורשות. למערכת ההפעלה אסור לשחרר על דעת עצמה את הזכרון הזה כי היא לא יכולה לדעת האם התוכנה שביקשה אותו עדיין משתמשת בו או לא. שחרור זכרון בצורה "אלימה" על ידי מערכת הפעלה ללא אינדיקציה האם הצרכן של הזכרון סיים להשתמש בו זו פעולה מסוכנת מאוד שתביא מהר מאוד למצבי אי וודאות קיצוניים.התרומה שלהם לא כ"כ גדולה כמו שאתה חושב , בא שנבין את כול הפעמים שהמערכת נתקעת , זה פשוט בגלל העובדה שאם תוכנה/חלון לא מפנה בעצמו ומנקה את הזכרון המוקצה לו , מערכת ההפעלה לא עושה את זה בעצמה , ולכן לפעמים יוצא שכשפותחים המון חלונות וסוגרים אתה תקבל מערכת מקרטעת ולעיתים נופלת . מה הבעיה הגדולה (מה שכול מתכנת C עושה בשינה) לשים מצביע לזכרון ולנקות אותו באופן אוטומטי , הרי המערכת מקצה אותו ? יש עוד דברים כאלו שזה פשוט עיגול פינות על חשבון הצרכן ,
....
ד ולמרות שהיו שפות פיתוח יותר טובות (בורלנד עשתה שפת פיתוח הרבה יותר טובה מהבייסיק של מיקרוסופט וגם מהC++ שלה לווינדואז , מה שמייקרוסופט עשתה היא יבשה אותה ע"י שימוש ברזרבות המזומנים האדירות שלה , ועד היום אין לה משהו מלוטש וכ"כ יעיל כמו שהיה לבורלנד ) ואותו דבר עם עוד דברים ....
חשוב על מע' הפעלה שהחליטה לשחרר זכרון שנמצא בשימוש הדריבר של המסך. מה יקרה כאשר הדריבר הזה יגש לזכרון הזה על מנת לבצע פעולות? הוא יקבל תוצאות שגויות.
כל מה שכתבתי כאן עוד לא נגע בבעיות המורכבות של הקצאות זכרון דינאמיות (בעיות שיש לא מעט דוקטורטים עליהם ברחבי העולם). חשוב על הסיטואציה הבאה:
1. יש לך 100K זכרון.
2. תוכנית א' צורכת 40K
3. תוכנית ב' צורכת 20K
4. תוכנית ג' צורכת 10K
5. תוכנית ב' סיימה עבודתה ופינתה את ה-20K שלה.
6. תוכנית ד צורכת 15K - איפה תקצה לה את ה-15K? בסוף הבלוק או כחלק מתת בלוק של 20K שהתפנה?
7. תוכנית ה' צורכת 10K, איפה תקצה את הזכרון שלה? שני צ'אנקים של 5K? אחד של עשר? מתי ואיך תחליט מה עדיף?
[/quote]

