系统相关
首页 > 系统相关> > 内存对齐

内存对齐

作者:互联网

内存对齐的原因:

对于自定义数据类型对齐规则:

如何查看对齐模数

当结构体嵌套结构体时候,只需要看结构体中最大数据类型就可以了

代码示例:

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#pragma pack(show)//可以查看对齐模数
//#pragma pack(1)//默认对齐模数为8    对齐模数可以改为 2的次方
//对于自定义数据类型   内存对齐规则如下
//1.从第一个属性开始   偏移为0
//2.第二个属性开始,地址要放在        该类型整数陪   与 对齐模数比  取小的值  的整数陪上
//3.所有的属性都计算结束后,整体再做二次对齐,整体需要放在属性中做大类型 与 对齐模数比 取小的值的整数倍上
typedef struct _STUDENT
{
        int a;//0~3            
        char b;//4~7
        double c;//8~15
        float d;//16~19
}Student;
void test01()
{
        printf("size of=%d\n",sizeof(Student));
}
//当结构体嵌套结构体时候,只需要看结构体中最大数据类型就可以了
typedef struct _STUDENT2
{
        char a;//0~7
        Student b;     //8~31
        double c;      //32~39
}Student2;
void test02()
{
        printf("size of=%d\n", sizeof(Student2));
}
int main()
{
        //test01();
        test02();
        return EXIT_SUCCESS;
}

标签:数据类型,取小,模数,内存,Student,对齐,属性
来源: https://blog.csdn.net/gyqailxj/article/details/116504175