vs编译器内存窗口,查看指针变量指向的值

监视窗口和内存窗口配合使用:
通过监视窗口可以非常方便的修改变量的值,但对于指针,尤其是字符串指针的修改则不方便,因为监视窗口不会提供对指针变量在内存中的布局、存储方式、空间分布的信息。这些问题这可以在“内存”窗口中获得解决。

故内存窗口是用来查看指针变量的值的,而不适合查看普通变量的值。
监视窗口是用来查看普通变量的值的,而不合适查看指针变量的值。

内存(memory)查看:alt+f6
通过调试-》窗口-》内存,打开内存窗口,除此之外还要在工具-》选项-》调试-》常规中,点上“启用地址级调试”,这个一般是默认启用的,否则调试窗口中是找不到内存选项的。
在这里插入图片描述
在这里插入图片描述
内存中的数据是16进制的,内存中的最直观的单位是由两位16进制数组成的字节,每个字节有8位组成,这8位分成两个4位,每个4为指代一个16进制数,即0~f
在这里插入图片描述

想要将查看指针变量的内存时,只需要将该指针变量名拖入内存窗口地址栏,地址栏下方就会自动显示它的内存布局,直接输入指针变量名也可以然后按下回车就可以,如果要在内存中看一个值变量而不是指针,也可以在其变量名前加&符取其地址,然后按下回车。
在这里插入图片描述
输入指针的变量名
在这里插入图片描述
按下回车后,变量名变成该指针变量在内存中的地址,该地址会出现在窗口的第一行的第一位,每一行都是连续的内存号,下面一行的内存号是下面一行的第一位的内存号,减去上一行的内存号,就是上一行整行监视着的内存号。

字符型指针的内存分布
字符串类型指针的内存表示比较简单,因为字符串由字符组成,而单个字符占一个字节,宽字符(unicode占两字节),且常是连续的内存空间,字符在内存中以对应的ascii码存在,也由两位16进制数组成,字符串指针因常有“\0”,所以在字符串内存中最后位还会跟上00。
在这里插入图片描述
在这里插入图片描述

整型指针的内存分布
整型指针变量不像字符串指针,字符串可以拆分成单个字符存放,每个字符占一个字节。而整型指针变量会在内存中被转换为16进制,并按照字节为单位进行拆分,例如整型数字0x1234578,0x开头表示这是一个16进制数,在内存中会被按照字节拆分为0x12,0x34,0x56,0x78四个字节,这四个字节在内存中的存放顺序受CPU种类的影响。
在计算机世界的两种CPU架构分别是powerPC和X86,powerPC采用大端存储方式,x86采用小端存储方式。

大端存储方式:
将字节序列的尾端放在高内存地址,高内存地址就是内存的尾部,内存地址一般是从左到右和从上往下递增的,这个的效果就是,字节在内存中和逻辑顺序是一样的:
逻辑上应该是12,34,56,78
内存中也是12,34,56,78

小端存储方式:
将字节序列的尾部放在低内存地址,低内存地址就是内存的首部,这个效果就实现了内存与逻辑在字节上的倒序。
逻辑上应该是:12,34,56,78
内存中是:78,56,34,12

本例子是在X86的vs下演示的:
在这里插入图片描述

Logo

一站式 AI 云服务平台

更多推荐