Reputation: 53
I printed sizeof(struct tm) in C using sizeof() operator it gives me 44 bytes.But in man page of ctime it has 9 int variables for time.then its size should be 36. How it is giving 44?
Upvotes: 3
Views: 3419
Reputation: 2181
Apart from the very true answers of RedX and Adeel, padding inside the structure can also lead to a size greater than the sum of the size of all elements. To prevent this with custom structures, you can use GCCs __attribute__((__packed__))
feature.
Upvotes: 2
Reputation: 1601
The glibc version of struct tm has additional fields...
long tm_gmtoff; /* Seconds east of UTC */
const char *tm_zone; /* Timezone abbreviation */
Read again man ctime
..
Upvotes: 2
Reputation: 15175
http://linux.die.net/man/3/ctime
The glibc version of struct tm has additional fields
long tm_gmtoff; /* Seconds east of UTC */ const char *tm_zone; /* Timezone abbreviation */
That's where you extra bytes come from (probably).
Upvotes: 5