【VS C++ 2010】查看内存的方法详解

1 示例代码

对于以下代码:

int main()
{
	int a = 100010001000;
	int b = 100;
	cout << "a = " << a << "  " << &a << endl;
	cout << "b = " << b << "  " << &b << endl;
 	system("pause");
	return 0;
}

输出结果为:
输出结果

2 设置断点调试

下面我们使用断点调试技术,在结束前打上断点,以便于我们查看内存

  • 按F9打上断点
  • 再按F5进行调试
  • 再按回车

得到以下结果
断点

3.1 注意事项

打了断点的含义是:该行不会被执行,在其之前的会被执行

对于上图,13行不会被执行,13行(不包含)之前的会被执行。

3 查看内存

然后做如下操作,以查看内存:
查看内存
设置字节显示情况,对于int来说,这里是4个字节的,选择4,观察可以得到:地址的连续性也是不断+4的
设置字节
这里涉及到一个引申的知识点,重点强调一下

4 内存查看方式分析

我们观察到对于int a = 100;在内存上显示是这样的
四字节查看
它采用
十六进制
来显示,这是为了方便人类查看,当然,十六进制的发明还有很多原因和应用,这里不再扩展。

两个十六进制位,就是一个字节,因此上面是两两显示的,但是值得注意的是,这种四字节查看方式,实际上,00 00 00的地址只是隐藏了而已,让我们使用单字节查看方式,你就瞬间明白了
单字节查看
自上而下权重升高
事实上,单字节的查看方式,更加符合内存的存储单元的实际情况

这里要尤为注意

  • 地址越大,权重越高,也就是下面的是高字节,上面的是低字节

5 建立关联:汇编语言

我们来回看一下**《汇编语言》**中的内存情况,进一步阐述。

5.1 基本单位为字节的情况

存储单元
一个存储单元,对应8个二进制位,2个十六进制位
存储单元的编号,也就是内存地址

5.2 基本单位为二进制位的情况

甚至,对于二进制位的描述,也是自上而下权重升高的
自上而下权重升高
不过值得说明的是,这只是一种通用的习惯,并不是强制性的,与实际硬件的实现方式也关系不大。

6 扩展阅读

【扩展材料】

在此链接我再补充一点:我们常用的,比如十进制的8,表示为0000_1000,这就是小端序

00001000

按照标准,小端序:数据的高位字节存放在地址的高端 低位字节存放在地址低端

这一点也印证了上述第五节的观点,高位地址的权重更大

低地址0x0015F74098
0x0015F741AB
0x0015F742B8
0x0015F7439A
0x0015F74410
0x0015F74522
0x0015F746FB
高地址0x0015F74700

7 疑问


问题1:在地址0x0015F741中最前面的0x是什么含义?**

在C/C++中,0x或0X代表十六进制的前缀,这也就解释了为什么后面的用十六进制表示的地址。

在java7以后,有以下前缀,来代表不同的进位计数制(以下的0中间带圆点,类似于扁的⊙)

  • 二进制:0b或者0B
  • 八进制:0(难区分,不常用)
  • 十六进制: 0x或0X
  • 十进制:不写前缀

7.1 扩展:进位计数制的前缀和后缀

在Verilog和数字逻辑中,十六进制使用h或者H来表示

十六进制的表示有

  • 前缀: 0x或0X
  • 后缀: h或H

具体使用h还是0x,取决于使用环境

同理,二进制和八进制也有前缀和后缀

  • 二进制
    • 前缀:0b或0B
    • 后缀:b或B
  • 八进制 【不常用】
    • 0
    • o或O

对于十进制

  • 没有前缀,不写前缀就是的十进制
  • 后缀:d或D
  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

XV_

感谢您的认可,我会继续努力!

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

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

打赏作者

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

抵扣说明:

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

余额充值