Radha
Radha

Reputation: 53

Size of struct tm

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

Answers (3)

matthias
matthias

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

Adeel Ahmed
Adeel Ahmed

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

RedX
RedX

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

Related Questions