C语言中结构体内存的计算方式

原则:1、结构体中第一个成员的内存首地址在0处;

2、其他成员的内存首地址为自身内存大小与VS默认(8)的较小值的整数倍处;

3、最终的内存大小是所有成员内存首地址较大值的整数倍。

举例:

typedef struct tmp
{
    int a;
    char c;
    char d;
}

所占内存如下图所示,a为第一个成员,首地址在0处,int型是4个字节;char型内存是1个字节小于8,所以首地址为1的整数倍,在4处;同理d的首地址也应为1的整数倍,在5处;总的内存应为成员中最大的即a(4)的整数倍,所以总的内存为8个字节

C语言中结构体内存的计算方式_第1张图片

 

typedef struct tmp1
{
    int a;
    char c;
    double d;
}

所占内存如下图所示,a为第一个成员,首地址在0处,int型是4个字节;char型内存是1个字节小于8,所以首地址为1的整数倍,在4处;d为double类型,内存为8个字节等于8,首地址在8的整数倍处,即8处;总的内存大小应为最大的d,即8的整数倍,即16个字节。

C语言中结构体内存的计算方式_第2张图片

 

typedef struct tmp2
{
    char a;
    int  c;
    long long d;
}

所占内存如下图所示,a为第一个成员,首地址在0处;c为int型,内存大小为4个字节小于8,首地址在4的整数倍处,即4;d为long long型,占8个字节等于8,首地址在8的整数倍处,即8;总的内存为最大值d(8)的整数倍,共16个字节

C语言中结构体内存的计算方式_第3张图片

 

你可能感兴趣的:(C语言,c语言,c++,开发语言)