שחרור הקצאה דינמית
לימדו אותי שאחרי שמקצים דינמית יש לשחרר את ההקצאה ע"י שימוש בפקודה free. להלן פונקציה שכתבתי. אני בכמה דילמות : 1. מתי ואיפה אני מכניס את השורה free ? אם אני מכניס אותה לפני ה- return אז לא יוחזר כלום לפונקציה הראשית. אם אני כותב אותה אחרי ה- return היא לא מתבצעת. 2. האם בכלל עלי לשחרר את ההקצאה ? כי להבנתי לאחר שהפונקציה "יוצאת" המשתנים שבתוכנה "מתים". סביר להניח שזה לא נכון בעניין של הקצאה דינמית, אבל מה לעשות... אני מבולבל. כל עזרה תתקבל בברכה.
לימדו אותי שאחרי שמקצים דינמית יש לשחרר את ההקצאה ע"י שימוש בפקודה free. להלן פונקציה שכתבתי. אני בכמה דילמות : 1. מתי ואיפה אני מכניס את השורה free ? אם אני מכניס אותה לפני ה- return אז לא יוחזר כלום לפונקציה הראשית. אם אני כותב אותה אחרי ה- return היא לא מתבצעת. 2. האם בכלל עלי לשחרר את ההקצאה ? כי להבנתי לאחר שהפונקציה "יוצאת" המשתנים שבתוכנה "מתים". סביר להניח שזה לא נכון בעניין של הקצאה דינמית, אבל מה לעשות... אני מבולבל. כל עזרה תתקבל בברכה.
int i = 0; Monom* new_poly; new_poly = (Monom*) malloc (poly_size * (sizeof (Monom))); for (; arr_size >= 0; arr_size--, i++) { if (arr[arr_size] != 0) { new_poly.coefficient = arr[arr_size]; new_poly.power = arr_size; } } return new_poly;