עבור לתוכן

הקצאת זיכרון דינמית במערך דו מימדי C

Featured Replies

פורסם

היי,

אשמח לעזרה בדרך כיצד להקצות זיכון למערך דו מימדי של char.

יש לציין כי מספר השורות שווה למספר העמודות.

תודה רבה :)

נערך על-ידי lina12

  • lina12 changed the title to הקצאת זיכרון דינמית במערך דו מימדי C
פורסם

את צריכה להקצות בלולאה מערך בגודל n של פוינטרים לchar ואז לרוץ על המערך איבר איבר בלולאה ולהקצות בכל מקום n איברים בגודל char.

 

אם את רוצה ממש את הקוד תכתבי אבל אולי תנסי לכתוב לבד, זה לא קשה במיוחד. 

 

קחי בחשבון שהקצאה דינמית יכולה להיכשל ואם היא נכשלה תצטרכי לשחרר את כל מה שהוקצה עד לאותו הרגע.

נערך על-ידי Buck

פורסם
  • מחבר
ציטוט של Buck

את צריכה להקצות בלולאה מערך בגודל n של פוינטרים לchar ואז לרוץ על המערך איבר איבר בלולאה ולהקצות בכל מקום n איברים בגודל char.

 

אם את רוצה ממש את הקוד תכתבי אבל אולי תנסי לכתוב לבד, זה לא קשה במיוחד. 

 

קחי בחשבון שהקצאה דינמית יכולה להיכשל ואם היא נכשלה תצטרכי לשחרר את כל מה שהוקצה עד לאותו הרגע.

תודה רבה קודם כל!

בהקצאה דינמית אני בודקת אם ההקצאה הצליחה ואם לא אני מחזירה הודעת שגיאה ויוצאת מהתכנית. לפני היציאה מהתכנית אני צריכה לשחרר בכל זאת את הזיכרון שהוקצה למרות שההקצאה נכשלה?

פורסם

אין על מה.


זה די תלוי במתרגל\מורה שלך, הייתי שואל. זה מהדברים שאף אחד לא אומר לסטודנטים מראש לפני התרגיל שצריך לעשות אבל כל מיני נודים נפוחים באקדמיה אוהבים להוריד עליהם על מנת שהממוצע לא יהיה גבוה מידי...

 

אם החלטת שכן אז שימי לב שאפשר להשתמש באותו האינדקס שהשתמשת בו להקצות על מנת לשחרר, שימי לב שאם נניח הקצת עד איבר 15 ואז ההקצאה נכשלה אז את יכולה להריץ את המשתנה i ששווה ל15 מ14 אחורה ל0 ולשחרר את כל האיברים שi רץ עליהם. אפשר לעשות זאת בפונקציה נפרדת (cleanup()) שמקבלת את i-1 כפרמטר כמו גם את המערך הדו מימדי.

נערך על-ידי Buck

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים