ערכתי לאחרונה בתאריך 30.01.12 בשעה 22:57 בברכה, איציק2
היי,
אממ אז ככה, קיבלתי שורה עם רווחים הייתי צריך להעביר אותה לstruct מסוים, בין רווח לרווח יש בעצם מילה שצריכים להקצות לה זיכרון מסוים ולהכניס אותה למקום המתאים, בעצם המבנה הוא כזה:
struct words { int n; char **w; };
|
לא עשיתי לו typedef כי לא נגעתי בזה בלי זה ואני רוצה לנסות הכל לפני המבחן..
בכל אופן, השאלה היא כזו, הכל עובד חלק הקטע שאני עכשיו רוצה לנקות את הזיכרון שהקצתי בסוף התכנית, כתבתי פונק' שאמורה לעשות את זה:
void freeAll (struct words * word) { int t; for (t = 0; t < word.n; t++) free (word->w); free (word.w); free(word); return; }
|
עריכה : מוזר אבל הוא לא רושם לי את הT, למעלה בFOR כתוב word->w[t , לא יודע למה הוא לא מציג את זה בהודעה..
הבעיה שאני מקבל שגיאה כשאני מגיע לריצה של הלולאת FOR, הקטע שאני רואה בדיבגר שקיימת את המילה ואני בעצם נותן את הכתובת הראשונה וזה לא עובד, לא יודע למה מה הולך שם פשוט לא עובד..
הרי אם אני משחרר את המערך של הפויינטרים אז זה לא ישחרר לי את כולם נכון?
לפי מה שהבנתי צריך לשחרר את כל המילים (כי כל מילה במערך משלה) אחת אחת ורק אז את המערך של הפויינטרים ורק בסוף את המערך הראשי,
לא עובד, למה??
תודה !
