我使用 sizeof() 运算符在 C 中打印 sizeof(struct tm) 它给了我 44 个字节。但是在 ctime 的手册页中它有 9 个 int 变量用于时间。那么它的大小应该是 36。它是如何给出 44 的?
问问题
2628 次
3 回答
5
http://linux.die.net/man/3/ctime
glibc 版本的 struct tm 有额外的字段
long tm_gmtoff; /* Seconds east of UTC */ const char *tm_zone; /* Timezone abbreviation */
这就是你额外字节的来源(可能)。
于 2012-12-20T09:49:04.917 回答
2
除了 RedX 和 Adeel 的非常真实的答案之外,结构内部的填充也可能导致大小大于所有元素大小的总和。要使用自定义结构防止这种情况,您可以使用 GCC__attribute__((__packed__))
功能。
于 2012-12-20T09:47:30.783 回答
2
struct tm 的 glibc 版本具有附加字段...
long tm_gmtoff; /* Seconds east of UTC */
const char *tm_zone; /* Timezone abbreviation */
再读一遍man ctime
..
于 2012-12-20T09:49:53.033 回答