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