首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >结构的大小tm

结构的大小tm
EN

Stack Overflow用户
提问于 2012-12-20 17:43:59
回答 3查看 2.6K关注 0票数 3

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-12-20 17:49:53

struct tm的glibc版本有额外的字段...

代码语言:javascript
复制
long tm_gmtoff;           /* Seconds east of UTC */
const char *tm_zone;      /* Timezone abbreviation */

再读一遍man ctime..

票数 2
EN

Stack Overflow用户

发布于 2012-12-20 17:49:05

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

结构tm的glibc版本有额外的字段

long tm_gmtoff;协调世界时以东的/*秒*/ const char *tm_zone;/*时区缩写*/

这就是你额外的字节(可能)的来源。

票数 5
EN

Stack Overflow用户

发布于 2012-12-20 17:47:31

除了RedX和Adeel的正确答案之外,结构内部的填充也可能导致大小大于所有元素的大小之和。为了防止自定义结构出现这种情况,您可以使用GCC的__attribute__((__packed__))功能。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13969210

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档