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

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

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

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

比如:

struct A {

int i;

char c;

} __attribute__((packed));

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

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

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

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

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏java一日一条

Java 程序优化:字符串操作、基本运算方法等优化策略

字符串对象或者其等价对象 (如 char 数组),在内存中总是占据最大的空间块,因此如何高效地处理字符串,是提高系统整体性能的关键。

613
来自专栏机器学习和数学

[编程经验]Python中的Lambda,Map, Reduce小结

今天要和大家分享的是Python匿名函数(anonymous functions),也叫lambda函数。匿名函数的意思就是说这个函数没有显式的函数名,因为一般...

3175
来自专栏跟着阿笨一起玩NET

Winform 中 DesignMode 返回值不正确的问题。

本文转载:http://blog.csdn.net/sabty/article/details/5325260

591
来自专栏数说戏聊

07.时间处理&抽取1.时间处理1.1 字符型转时间型2.时间抽取

401
来自专栏水击三千

Winform单例模式与传值

单例模式(singleton)的意思就是只有一个实例。单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。 在多窗体界面...

2555
来自专栏java学习

面试题33(关于局部变量的理解?)

如下代码的 输出结果是什么? public class Test { public int aMethod() { static int i = 0; ...

2586
来自专栏IT大咖说

面向前端开发者的V8性能优化

摘要 V8是一个由丹麦Google使用C++开发的开源JavaScript引擎,用于Google Chrome中,目前该JavaScript引擎已用于其它项目的...

35210
来自专栏机器学习实践二三事

Redis数据结构

主要内容来源于书籍Redis实战(Redis In Action),这篇只是用来记录自己学习的过程,因为刚学所以很浅显,适合初学者哈 Redis数据结构 5种数...

1869
来自专栏null的专栏

设计模式——类图以及类与类之间的关系

    设计模式在程序设计上有着很重要的作用,使用设计模式可以使得代码更容易被理解,使得代码更规范,真正实现工程化。 一、用UML表示一个类 ? 类图一般是三行...

3304
来自专栏大内老A

Model验证系统运行机制是如何实现的?

在前面三篇文章(《ModelValidator》、《ModelValidatorProvider》和《ModelValidatorProviders》)中我们详...

17810

扫码关注云+社区