Ik zit hier met structs te klooien in C++.
En het valt me op dat wanneer ik sizeof los laat op de struct, dat deze dan altijd 2 bytes groter is dan de sizeof van de individuele members bij elkaar opgeteld.
Is hier een reden voor? En wat is de betekenis van deze twee bytes? Ik gebruik hier VC++ 6.0 als compiler.
Ik dacht altijd dat een struct eenvoudig was dat de members sequentieel in het geheugen staan.
Deze:
, wordt met sizeof een 1072 bytes...
Terwijl deze:
, wel 12 bytes wordt met sizeof, 't wordt vager en vager.
En het valt me op dat wanneer ik sizeof los laat op de struct, dat deze dan altijd 2 bytes groter is dan de sizeof van de individuele members bij elkaar opgeteld.
Is hier een reden voor? En wat is de betekenis van deze twee bytes? Ik gebruik hier VC++ 6.0 als compiler.
Ik dacht altijd dat een struct eenvoudig was dat de members sequentieel in het geheugen staan.
Deze:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| /*
* Info nodig per Activiteit (1070 bytes):
* - ObjectType Activiteit (enum (4 byte))
* - naam Activiteit (string (30 bytes))
* - status Activiteit (enum (4 bytes))
* - deadline Activiteit (time_t (4 bytes))
* - notition Activiteit (string (1024 bytes))
* - aantal Registraties (UINT (4 bytes))
*/
struct ActivityStruct {
ObjectType objectType;
char name[30];
Status status;
time_t deadline;
char notition[1024];
UINT numberOfRegistrations;
}; |
, wordt met sizeof een 1072 bytes...
Terwijl deze:
code:
1
2
3
4
5
6
7
8
9
10
11
| /*
* Info nodig per Registratie (12 bytes)
* - ObjectType Registratie (enum (4 byte))
* - start Activiteit (time_t (4 bytes))
* - einde Activiteit (time_t (4 bytes))
*/
struct RegistrationStruct {
ObjectType objectType;
time_t start;
time_t end;
}; |
, wel 12 bytes wordt met sizeof, 't wordt vager en vager.