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?

有帮助吗?

解决方案 2

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..

其他提示

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).

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.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top