第一阶段18 C语言结构体的尺寸

加入CSDN是出于记录,希望有不足之处多加指正。

1、CPU字长:

字长的概念指的是CPU在处理数据是一次运行可以处理的最大的数据位:比如64位/ 32位。
CPU在读取 / 存取数据时一次性最多可以获得的数据大小。

getconf LONG_BIT
64

2、地址对齐

  • CPU如果时32位的那么他每一次从内存中读取数据都是按照4字节一次的读写方式来读取数据。

  • 如果我们存放的数据(变量)不是按照4字对齐。

  • 如果拿8 字节为例子如下图,CPU需要完成读取所有数据需要读取3次。

  • 如果 8 字节数据是地址,字节对齐,那么CPU只需要读取两次就可以全部读取完毕。

  • 请添加图片描述

  • 总结:如果所有的数据的存储地址都是对齐的,那么CPU在读取/ 写入的时候可以大大提高效率。说白了如果能一次读完就不需要读取两次或更多次。

3、变量的M值

在系统中如果一个变量他的地址能够满足是某一个数的整数被就称为地址对齐,这个某个数值的就是M值。不同的数据类型他的M值就不一样。

char c ; //占1字节,因此不管C放在哪里都能地址对齐 m = 1;
short s ; //占2字节,因此不管s放在能被2整除的地址都属于地址对齐 m = 2;
int i ; //占4字节,他的地址如果能被4整除就称为地址对齐 m = 4;
double d; //占8字节,他的地址如果能被4整除就称为地址对齐 m = 4,下面有理解;

手动干预M值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值