struct groesse
-
hola leute
kann mir jemand sagen, warum folgendes struct 12 Byte gross ist ?
struct TxlShortTime { int hour:5; int min:6; int sec:6; int year:19; int month:4; int day:5; int dayofweek:3; int reserved:16; inline TxlShortTime& operator=(SYSTEMTIME &t_time) { year = t_time.wYear; month = t_time.wMonth; day = t_time.wDay; dayofweek = t_time.wDayOfWeek; hour = t_time.wHour; min = t_time.wMinute; sec = t_time.wSecond; return *this; } }; sollten eigendlich nur 64 bit bzw 8 byte gross sein. in den compilereinstellungen hab ich 4 byte ausrichtung eingestellt (BCB). mit sizeof(TxlShortTime) krieg ich aber immer 12 bytes angezeigt. denkfehler meinerseits ? oder was is da los ? Meep Meep
-
kommt darauf an wie dein compiler das uebersetzt
bzw: sizeof wird int fo:5 also ein byte rechnen
-
hab das problem gefunden
die bitfelder waren falsch angelegt.
der compiler legt bitfelder nur in integer´s an.
die muessen genau gefuerllt werden. wenn er nicht alles genau reinbringt, dann vergroessert er den benoetigten speicher.mit
struct TxlShortTime { int year:19; int month:4; int dayofweek:3; int sec:6; int hour:5; int min:6; int day:5; int reserved:16; ... }
passt es jetz
Meep Meep
-
hier kann man auch nochmal einen blick draufwerfen:
"Optimize your member layout"mfg