彻底搞懂大小端存储and调试中内存窗口如何使用?

定义

首先我们有一个常识,Windows采用小端存储方式。

在这里插入图片描述

探究Windows下vs2019是什么存储?

在小端存储方式中,低字节存储在内存的低地址处,高字节存储在内存的高地址处。这与大端存储方式恰好相反,大端存储方式中高字节存储在低地址处,低字节存储在高地址处。目前主流的CPU和操作系统都采用小端存储方式,因此小端存储已成为事实上的标准。

看到上面这句话,什么高地址低址值很抽象。那么首先我们就来学习一下何为高低地址。

地址一般是上低下高,左低右高。

下面来vs2019中探究一下调式中的内存中的这些数值都是些什么。

  • 下图是完整的一个内存图,我选择是展示64列,也就是这一行全部展示了,密密麻麻的,所以一般都会选择少一点,够看你当前变量占用字节长度即可;
  • 例如int->4列,double->8列

在这里插入图片描述
在这里插入图片描述

上图的最左边其实就是每一行开始的那个位置的地址,每一行的每一个字节都会右对应的地址,但是如果你都显示,也就是说,每一个字节都去显示它的地址,看起来就太冗杂了,所以vs2019中就只是显示这一行中第一个的地址。过64字节换一行。

  • 还需要注意的是,在内存中都是十六进制进行存储的,无论是字符串还是整形

这里写一个代码来深度探究一下调试中的内存如何查看

int main()
{

	int a = 3;
	int b = 4;
	printf("%d %d",a,b);
	return 0;
}

我们进行调试,打开内存监视窗口,输入&a和&b也就是取他们的地址,正好这两个变量,离的很近,我就一次找到了。

  • 最先得到的内容便是边是地址,边是地址。

  • 对于内存中的这些04 00 00 00他是十六进制的,二进制转十六进制(四位组合法),也就说明,一个00中有两个十六进制数就代表一个字节。这里是整形变量b占用四个字节,所以有四个一字节组成。
    在这里插入图片描述

  • 而且我么发现在一个04 00 00 00四个字节中的一个字节04中的内部顺序不变化都是先放低位再放高位。无论是在大端还是小端都是这样,不一样的在于字节之间的先后顺序

  • 通过上图,也可以看出,vs2019的低位存放于低地址,高位存放于高地址,所以他是一个小端存储。

  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿然成长日记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值