שלום רב,
במסגרת מימוש הפונקציה mergeSortedLists בסעיף 1 של החלק היבש של תרגיל בית 1, בחרנו לממש פונקציית עזר בשם allocateList שתפקידה לטפל בכלל הקצאות הזיכרון הנדרשות ליצירת הרשימה הממוזגת.
הפונקציה mergeSortedLists פועלת באופן הבא: היא מנסה להקצות רשימה מקושרת באורך נתון length (תוך שמירת המצביע ל־head). היא עושה זאת עד לסיום הקצאת הרשימה, או עד לכישלון הקצאת המקום (הבדיקה נעשית בלולאת ה-for). אם הקצאת הרשימה נכשלה, הפונקציה משחררת את כל הזיכרון שהוקצה ומחזירה NULL, אחרת היא מחזירה את הרשימה המבוקשת.
בבדיקת הסעיף, הורדו לנו 20 נקודות על שלכאורה לא בדקנו שההקצאה בוצעה כראוי ועל שלכאורה לא דאגנו לשחרור הזיכרון שהוקצה, במקרה של שגיאה.
עם זאת, ניתן לראות שהפתרון שהצענו אכן בודק שההקצאה בוצעה כראוי – הבדיקה נעשית הן ל־head והן לשאר החוליות באמצעות התנאי של לולאת ה-for – וכי הזיכרון שהוקצה משוחרר במקרה של כישלון – במקרה זה this יהיה NULL בסיום ניסיונות ההקצאה ולכן לולאת ה-while תפעל לשחרור כל המקום שהוקצה.
לאור זאת, אבקש לתקן את הציון של חלק זה.