复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
typedef struct Goods
{
char a[18];//18
double b;//8
char c;//1
int d;//4
short e;//2
}Goods;
int main()
{
Goods a[10];
printf("%dn",sizeof(Goods));
return 0;
}
实际结果如下图:
将
复制代码
1
char c;
的声明放在结构体内第二行声明,其它代码不变
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
typedef struct Goods
{
char a[18];//18
char c;//1,
double b;//8
int d;//4
short e;//2
}Goods;
int main()
{
Goods a[10];
printf("%dn",sizeof(Goods));
return 0;
}
重新运行
只是调整了结构体内变量的声明顺序,就减少了4个字节的内存。
上图左右两边分别为两段程序的结构体在内存的存放情况:
因为程序二将char c;
移至了char a[18];后。
故char c;原来存在24现在存储在了14,这样24-27空出的内存就用来存储后面的变量。
由此可知,合理安排结构体内变量的声明顺序可以减少程序所占用的内存。
结构体在占用内存的情况详见。
结构体的补齐与对齐:https://blog.csdn.net/chuhe163/article/details/80247207
最后
以上就是鳗鱼小土豆最近收集整理的关于合理改变结构体体元素声明顺序,节省内存空间的全部内容,更多相关合理改变结构体体元素声明顺序内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复