פורסם 2010 בינואר 2115 שנים כמובן. נניח שאתה רוצה להקצות מערך בגודל n, של מבנה מטיפוס mystruct. אז עושים משהו כזה:mystruct *arr = (mystruct*)malloc(n*sizeof(mystruct));
פורסם 2010 בינואר 2215 שנים אם בעצמים אתה מתייחס לאובייקטים של C++ ולא סתם לPOD struct, אז תשתמש ב new ולא בmalloc (בכל מקרה עדיף להשתמש ב new אם אתה מתכנת ב C++)
פורסם 2010 בינואר 2215 שנים מחבר כמובן. נניח שאתה רוצה להקצות מערך בגודל n, של מבנה מטיפוס mystruct. אז עושים משהו כזה:mystruct *arr = (mystruct*)malloc(n*sizeof(mystruct));יואב,הכוונה היא לא ל-Struct אלה לעצם של מחלקה.והשאלה הזו היא כללית, כמובן שאעדיף להשתמש ב-NEW במצב רגיל.
פורסם 2010 בינואר 2215 שנים והנה שיפור שנראה טיפשי אבל אחרי שנות נסיון הוא מונע לא מעט באגים:במקום:SomeType *p;SomeType *d;/* ... */p = malloc(n * sizeof(SomeType));/* ... */memcpy(d, p, sizeof(SomeType) * n);/* ... */כדאי לעשות:SomeType *p;SomeType *d;/* ... */p = malloc(n * sizeof(*p));/* ... */memcpy(d, p, sizeof(*d) * n);/* ... */מומלץ גם על memset, וכו'.ככה כאשר מישהו ישנה את SomeType למשהו אחר, הוא לא יצור באג בגלל שהוא שכח לשנות גם את כל שאר המקומות.תזכרו: תמיד תתכנתו כאילו מי שיתחזק את הקוד שלכם הוא מטורף עם גרזן שיודע איפה אתם גרים.לדוגמא, לי יש גרזן ואני יודע איפה כל חברי הצוות שלי גרים.
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.