struct tm的大小

时间:2012-12-20 09:43:59

标签: c linux sizeof ctime

我使用sizeof()运算符在C中打印sizeof(struct tm)它给了我44个字节。但是在ctime的手册页中,它有9个int变量用于time.then它的大小应该是36.它是如何给出44?

3 个答案:

答案 0 :(得分:5)

http://linux.die.net/man/3/ctime

  

struct tm的glibc版本有其他字段

long tm_gmtoff;           /* Seconds east of UTC */
const char *tm_zone;      /* Timezone abbreviation */

这就是额外字节来自(可能)。

答案 1 :(得分:2)

除了RedX和Adeel的非常真实的答案之外,结构内部的填充也可能导致大小超过所有元素大小的总和。要使用自定义结构来防止这种情况,您可以使用GCC __attribute__((__packed__))功能。

答案 2 :(得分:2)

struct tm的glibc版本还有其他字段......

long tm_gmtoff;           /* Seconds east of UTC */
const char *tm_zone;      /* Timezone abbreviation */

再次阅读man ctime ..