【答疑释惑】C语言里面结构体大小统计方法

之前说过一个关于结构体在内存中所占字节数的问题,我们知道结构体长度的计算并不是所有成员长度的相加,而是因为编译器优化会对其进行对齐,这样会优化访问速度等。

那么还有一种情况,因为特殊原因,需要结构体的长度按字节对齐,结构体的长度就是所有成员长度的和。尤其是嵌入式编程以及网络编程中好多地方都有这样的要求,这时候怎么做呢?

这个时候如果是在linux下,就需要用到GNU C 的__attribute__ 机制。

比如:

struct A {

int i;

char c;

} __attribute__((packed));

那么这个结构体的长度就是sizeof(int)+sizeof(c)的大小。

类似的在windows下也有相应的机制来实现。更详细的介绍可参考网上的文章。

原文发布于微信公众号 - 程序员互动联盟(coder_online)

原文发表时间:2015-07-10

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏数据结构与算法

07:机器翻译

7:机器翻译 总时间限制: 1000ms 内存限制: 65536kB描述 小晨的电脑上安装了一个机器翻译软件,他经常用这个软件来翻译英语文章。 这个翻译软件...

4146
来自专栏java思维导图

8张图理解Java,一图胜千言

一图胜千言,下面图解均来自Program Creek 网站。如果图解没有阐明问题,那么你可以借助它的标题来一窥究竟。 1、字符串不变性 下面这张图展示了这段代码...

2463
来自专栏大闲人柴毛毛

Redis源码分析(三)——Redis数据结构-字典

1. 数据结构 ? 1.1 哈希表 typedef struct dictht{ dictEntry **table; unsigned long s...

3065
来自专栏人工智能头条

TensorFlow架构与设计:变量初始化

1034
来自专栏Java后端技术栈

8 张图理解 Java

一图胜千言,下面图解均来自Program Creek 网站的Java教程,目前它们拥有最多的票选。如果图解没有阐明问题,那么你可以借助它的标题来一窥究竟。

701
来自专栏前端儿

队花的烦恼一

ACM队的队花C小+经常抱怨:“C语言中的格式输出中有十六、十、八进制输出,然而却没有二进制输出,哎,真遗憾!谁能帮我写一个程序实现输入一个十进制数n,输出它的...

802
来自专栏mathor

LeetCode329. 矩阵中的最长递增路径

 dfs,主函数中枚举起点,然后dfs函数中枚举四个方向进行移动,但是光dfs还不够,因为我们发现存在很多冗余,所以这是一道dfs+dp的问题,resul...

1561
来自专栏蓝天

snprintf和strncpy对比

有关snprintf返回值更多信息,请参考:http://bbs.hadoopor.com/thread-1185-1-1.html

1122
来自专栏吴伟祥

关于“分类”的应用 原

三、SQL中区分类别的过滤条件:比如取分类2,那么就是 2=2 <![CDATA[ & ]]>type

862
来自专栏机器学习算法与Python学习

Python:numpy总结(4)

31、chr函数,获取指定的字符 例子: #获取指定的字符for i in range(65,70): print str(chr(i))...

4019

扫码关注云+社区

领取腾讯云代金券