改cpp[1] Vscode Hex Editor,在vscode中查看内存

#c 引入
我们在开发C++时,常常需要与内存打交道。调试时,查看内存的变量就成了一个很重要的需求。在vs中查看非常方便,但在vscode中并不能直接查看。虽然vscode可以监听到变量,但看不到内存里的格式。可以通过Hex Editor这个插件,来查看内存。

1.安装插件

![在这里插入图片描述改cpp[1] Vscode Hex Editor,在vscode中查看内存_第1张图片

2.Hex Editor使用

上一个例程:

#include 
#include 


using namespace std;

int main(){

    int* p=new int[3];
    p[0]=2;
    p[1]=5;
    p[2]=7;

    cout<<p[0]<<endl;
    cout<<p[1]<<endl;
    cout<<p[2]<<endl;
    
    return 0;
}

进入debug,然后可以看到这样的界面,我们来一一介绍,各个位置代表的含义。

改cpp[1] Vscode Hex Editor,在vscode中查看内存_第2张图片
这里创建了一个数组,并用指针p指向这个数字。值得一提的是,想用这个Hex Editor工具,必须得用指针!
变量区可看到一个Local,底下有我们的指针p。把鼠标放在上面,会有:查看二进制数据 这么一个选项。
可以看到,p的值是 0x25b2300。这个意思是,数组的首地址。点击查看二进制数据,界面如下。(debug多运行几行,到cout那个位置才完整所有数组的赋值。)

改cpp[1] Vscode Hex Editor,在vscode中查看内存_第3张图片
右边就是我们的内存查看器了。
首先,看到的是p的实际内容,也就是p指向的地址。下面是两排数字

改cpp[1] Vscode Hex Editor,在vscode中查看内存_第4张图片
我们知道,内存是以字节为单位的。我们有了0x25b2300这个基地址,同时也得给后面每一个字节分配一个地址号。这个字节的地址号,就是基地址+偏移地址。偏移地址便是左边红色圈出的这排数。

改cpp[1] Vscode Hex Editor,在vscode中查看内存_第5张图片

对应的,右边的数字,就是这8个bit存贮的数字。当然,你可能会有疑问,内存中的数字,是8个2进制数,这里怎么只有2个?
这2个数字,是16进制的。(2的8次方=16+16)

P[0]:
第一个字节是 02 第二个字节是00 第三个字节是00 第四个字节是00,
排列起来是:
00 00 00 02 (16进制)
转换为内存中真正的形式:
0000 0000 0000 0000 0000 0000 0000 0010(2进制)
对应到我们的P[0],就是2。(正整数的补码反码一样)

P[1]:
第一个字节是05 第二个字节是00 第三个字节是00 第四个字节是00,
排列起来是:
00 00 00 05(16进制)
转换为内存中真正的形式:
0000 0000 0000 0000 0000 0000 0000 0101 (2进制)
对应到P[1],就是5。

以此类推。

点开07这个数字可以发现右边的解析器。改cpp[1] Vscode Hex Editor,在vscode中查看内存_第6张图片
07这个字节,或者说,偏移地址为00000008的这个字节,也就是我们的P[2]。右边的解释器起到一个辅助查看的作用。当这个字节的数据类型为uint8时,解释器会读取这个字节的内容,并按照编码得到对应的数字:7。当这个字节的数据类型为int32时,解释器会读取这个字节以及后面3个字节的内容,并按照编码得到对应的数字:7。 当然,解释器并不知道这个字节到底是啥类型,那么就把所有的类型都展示出来。

你可能感兴趣的:(C++,vscode,c++,ide)