במיין שאתה מבצע את הפעולה הזו:
RECORD* rec=(RECORD*)malloc(10*sizeof(RECORD*)); rec->poly = NULL; // this is for the second section of this message.
|
אתה בעצם רוצה ליצור סוג של מערך של 10 רקורדים(ולא ל 10 פוינטרים לרקורד).
ולכן אתה צריך לכתוב את זה ככה:
RECORD* rec=(RECORD*)malloc(10*sizeof(RECORD));
|
ואתה נופל בפונקציה ADD שאתה מבצע ריאלוק על POLY.
ריאלוק רוצה לקבל את הכתובת של POLY כפרמטר(אבל אין כזה בהתחלה(הכתובת היא זבל אם לא אתחלת אחרת)..הייתי מייעץ לך לאתחל אותו ב NULL..ובפונקציה לשאול אם POLY הוא NULL תבצע הקצאת זכרון ראשונית ע"י מאלוק ורק אחרת תבצע ריאלוק עליו).
משהו כזה:
if(!rec->poly) // if rec->poly is null rec->poly = (POLIGON*)malloc(sizeof(POLIGON)); else rec->poly=(POLIGON*)realloc(rec->poly,2*sizeof(POLIGON));
עכשיו אין לי מושג מה אתה רוצה לעשות שם מבחינה לוגית..התייחסתי נטו לסינטקס שגרם לקריסות..אל תשכח לשחרר את כל ההקצאות של הזכרון(על כל מאלוק כזה צריך להיות לך FREE ולא רק על REC במיין).
|