美文网首页
结构体A的实例占用多少内存

结构体A的实例占用多少内存

作者: diveinljq | 来源:发表于2017-03-12 20:33 被阅读0次
结构体中成员按照定义时的顺序依次存储在连续的内存空间。但并不是像数组那样的连续。
内存对齐计算内存地址比较方便,内存地址会非常有规律,减小了内存寻址时间。若不对齐,
内存地址的变化非常没有规律,内存地址往往是在寄存器里计算出来的基本类型指的是像
char、int、float、double这样的内置数据类型

结构体总大小大于等于所有成员的大小之和。
结构体的总大小必须可以整除最宽基本成员。  
结构体成员的地址 - 结构体的首地址 = 偏移量,必须是当前成员整数倍。
结构体尾部不足的部分,就会被填充。 整数包括正整数、0、负整数。
当只用一个成员时不存在对齐。
两者取最短原则。

实例:

struct A{
    char a;  
    short b;
    int c;
    float d;
    long e;
    double f;
};//结构体A的实例占用多少内存

int main(int argc, const char * argv[]) {
    
    struct A a;
    
    printf("A = %lu个字节\n",sizeof(a));
    printf("char = %lu个字节\n",sizeof(char));
    printf("short = %lu个字节\n",sizeof(short));
    printf("int = %lu个字节\n",sizeof(int));
    printf("float = %lu个字节\n",sizeof(float));
    printf("long = %lu个字节\n",sizeof(long));
    printf("double = %lu个字节\n",sizeof(double));    
    return 0;
}

结果为

A = 32个字节
char = 1个字节
short = 2个字节
int = 4个字节
float = 4个字节
long = 8个字节
double = 8个字节

相关文章

网友评论

      本文标题:结构体A的实例占用多少内存

      本文链接:https://www.haomeiwen.com/subject/usrxnttx.html