洋葱呀洋葱、 2021-06-09 13:45 采纳率: 40%
浏览 123
已采纳

c语言中为啥有时候int占用内存字节数为2?

如:

struct dog

 { char ch[10];

   int i;

   int *p;

   double k;

 } dog1;

 

为啥dog1占用内存的字节数为22?int啥时候等于占用2?

  • 写回答

3条回答 默认 最新

  • qfl_sdu 2021-06-09 14:19
    关注

    32位系统中:

    char ch[10];  //正常情况下占10个字节

    int i; //正常情况下占4个字节

    int *p; //正常情况下占4个字节

    double k;//占8个字节

    但是在结构体中,存在字节对齐问题,double类型占用8个字节,int和int*一起也占用8个字节,所以内存总量应该是8的倍数,char数组补齐,大小是10以上且是8的倍数,最小的数是16。所以总共占32个字节

     

    本回答被题主和专家选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?