我使用sizeof()运算符用C语言打印了sizeof(struct tm),它在ctime的手册页中给出了44个bytes.But,它有9个time.then变量,它的大小应该是36。它是如何给出44的?
发布于 2012-12-20 17:49:53
struct tm的glibc版本有额外的字段...
long tm_gmtoff; /* Seconds east of UTC */
const char *tm_zone; /* Timezone abbreviation */再读一遍man ctime..
发布于 2012-12-20 17:49:05
http://linux.die.net/man/3/ctime
结构tm的glibc版本有额外的字段
long tm_gmtoff;协调世界时以东的/*秒*/ const char *tm_zone;/*时区缩写*/
这就是你额外的字节(可能)的来源。
发布于 2012-12-20 17:47:31
除了RedX和Adeel的正确答案之外,结构内部的填充也可能导致大小大于所有元素的大小之和。为了防止自定义结构出现这种情况,您可以使用GCC的__attribute__((__packed__))功能。
https://stackoverflow.com/questions/13969210
复制相似问题