עבור לתוכן

|עזרה| חבר'ה יש למישהו קוד מוכן של REALLOC , אני חייב לממש באופן עצמאי...

Featured Replies

פורסם

את הפונקציה הנ"ל .

תודה מראש :)

פורסם

אם אתה צריך לממש בעצמך, אז מה הטעם להשתמש בקוד מוכן?

בכל מקרה, realloc זו פונקציה שבסך הכל עושה שלושה דברים:

1. מקצה זכרון בגודל החדש.

2. מעתיקה את התוכן של הזכרון הקודם לזכרון החדש.

3. משחררת את הזכרון הישן.

וכמובן בסוף היא מחזירה מצביע לזכרון החדש שהוקצה.

די קל לממש אותה.

פורסם
  • מחבר

תודה, אבל איך אתה עושה העתקה של המקום הישן לחדש ?

פורסם

הבעיה במימוש realloc בעצמך בעזרת malloc ו-free זה שאתה לא יודע את גודל הזכרון הישן.

בחלק מהפלטפורמות יש פונקציה לא סטנדרטית שמחזירה לך את המידע הזה.

פורסם

אתה יכול לראות את קוד המקור של המימוש המקורי בספרייה המתאימה.

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

פורסם
  • מחבר

איך אני משיג את הקוד הזה שאתה מדבר עליו ?

תוכל לעשות בשבילי copy paste ?

תודה

פורסם

הקוד של המימוש המקורי זה כנראה לא מה שאתה מצופה לכתוב בעצמך.

תנסה לכתוב כאן (לפי מה שכתב שניצל) את המימוש שלך ואם יש בעיות מישהו (אולי אפילו אני אם יהיה לי זמן) יתקן אותך.

הפורטוטייפ הוא:

void *realloc(void *pointer, size_t size);

פורסם
  • מחבר

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

תודה רבה אנשים! :xyxthumbs:

ארכיון

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

דיונים חדשים