当前位置:首页 >> 技术栈专业化分层 >> 【VS C++ 2010】查看内存的方法详解,hike x1

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

cpugpu芯片开发光刻机 技术栈专业化分层 1
文件名:【VS C++ 2010】查看内存的方法详解,hike x1 【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 扩展阅读

【扩展材料】

大端序与小端序1大端序与小端序2

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

00001000

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

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

低地址0x0015F74098↓0x0015F741AB↓0x0015F742B8↓0x0015F7439A↓0x0015F74410↓0x0015F74522↓0x0015F746FB高地址0x0015F747007 疑问

问题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 八进制 【不常用】 0o或O

对于十进制

没有前缀,不写前缀就是的十进制后缀:d或D
协助本站SEO优化一下,谢谢!
关键词不能为空
同类推荐
«    2025年12月    »
1234567
891011121314
15161718192021
22232425262728
293031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
文章归档
网站收藏
友情链接