הבנת האופן שבו הנתונים מאוחסנים בזיכרון היא חיונית לתכנות יעילה ב C ו- C++. Structures ו- האיגודים הם סוגי נתונים בסיסיים המשפיעים על הפריסה של זיכרון וגודל. מאמר זה מסביר כיצד הזיכרון מוקצה עבור סוגי נתונים אלה וכיצד לחשב את גודלם במדויק.

זיכרון של מבנים

מבנים ב C ו- C++ הם אוספים של משתנים, אולי של סוגים שונים, מקובצים יחד תחת שם יחיד.הפיצר מקצה זיכרון למבנה על ידי הצבת כל חבר באופן שווה, עם ⁇ אפשרי כדי לעמוד בדרישות היישור.

הגודל הכולל של מבנה הוא סכום גודלם של חבריו בתוספת כל ⁇ נוסף להיערכות. פדינג מבטיח שכל חבר מתחיל בכתובת המפולגת על ידי גודלו או דרישת היבוא שלו.

זיכרון של האיחוד

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

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

חישוב גודל נתונים

חישוב גודלם של מבנים ואיגודים כולל סיכום גודלם של חברים בודדים ובהתחשב ב ⁇ להיערכות.

לדוגמה, יש לשקול מבנה עם FLT:0 ו-(FLT:1) בגודל המבנה תלוי בגודל של FLT:2, גודלו של FLT 3: 3, ו ⁇ נוסף להיערכות.

  • (ב) ,0) ,5 ,4 ,5 , .
  • שקול דרישות היערכות לכל חבר.
  • חשבון עבור ⁇ הוסיף על ידי המדר.
  • זכרו שאיגודים חולקים זיכרון בין כל החברים.