הקצאת מערך עצמים באמצעות malloc - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

הקצאת מערך עצמים באמצעות malloc


orlupo

Recommended Posts

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

mystruct *arr = (mystruct*)malloc(n*sizeof(mystruct));

יואב,

הכוונה היא לא ל-Struct אלה לעצם של מחלקה.

והשאלה הזו היא כללית, כמובן שאעדיף להשתמש ב-NEW במצב רגיל.

קישור לתוכן
שתף באתרים אחרים

והנה שיפור שנראה טיפשי אבל אחרי שנות נסיון הוא מונע לא מעט באגים:

במקום:


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 למשהו אחר, הוא לא יצור באג בגלל שהוא שכח לשנות גם את כל שאר המקומות.

תזכרו: תמיד תתכנתו כאילו מי שיתחזק את הקוד שלכם הוא מטורף עם גרזן שיודע איפה אתם גרים.

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

קישור לתוכן
שתף באתרים אחרים

ארכיון

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

×
  • צור חדש...