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

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条)

报告相同问题?

悬赏问题

  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)