结构体大小的计算及设置内存字节对齐数原理理解

来源:互联网 发布:网络市场调研的5个步骤 编辑:程序博客网 时间:2024/04/30 13:23

源码可参考上一篇的 《结构体初始化及结构体指针.结构体数组.结构体函数的调用赋值等》

//结构体变量的大小不仅由 成员大小决定+内存对齐(数据存储的规则)
//作用:大大增大内存读取效率
//设置内存对齐
#pragma pack(8);//8字节对齐 vc6.0系统默认是8字节对齐
//#pragma pack(4);//8字节对齐 vc6.0系统默认是8字节对齐
//#pragma pack(1);//1字节对齐 即结构体成员的字节大小
struct NODE
{
char ch; //1
short sh; //2
int in; //4
float f; //4
double db;//8
char* p; //4
char arr[5];//5 11+17=28
};
int main(void)
{
printf("%d\n",sizeof(struct NODE));
}
8字节内存排序图

4字节内存排序图: