C语言中,为了节省内存,定义结构体时要注意些什么

来源:百度知道 编辑:UC知道 时间:2024/06/09 04:48:48
要求,准确些.谢谢

使用位域(Bit-fields)自己指定占用的空间大小.(如果不清楚位域的话,上网搜索.)

如果用struct的话,注意以下几点:

1.尽量使用占为少的类型,如,在可能的时候使用short代替int
2.按数据类型本身占用的位置从大到小排列
例如
struct{
int a;
char b;
int c;
char d;
}
应该写为:
struct{
int a;
int c;
char b;
char d;
};

一般的编译器会采取一种叫做填充(padding)的方式来对齐数据.
以一个机器字(比如在32-bit的机器上为word = 32bit.)为基础进行填充.
像上面的struct会这样存储:
(xp,vc6.0)
a 32bit = 4byte
c 32bit = 4byte
b,d,*,* 32bit = 4byte
其中,两个*号表示填充(但是并没有使用那两个位置.)

如果可以阅读英语的话,可以参考:
http://c-faq.com/struct/align.esr.html

将各成员按其所占字节数从小到大声明,以尽量减少中间的填补空间。