VS2022的内存栏都是问号怎么处理

怎样能显示正常的十六进制形式?是字体设置的问题还是其他原因 需要具体的解决步骤 感谢

img

上面的地址你要输入啊。现在上面的地址是0x0000000000000004,要改为你想查看的内存地址后回车。然后问号是因为内存中存储的数据不是可见字符,所以无法显示,统一显示成问号

printf就能输出16进制数字。
很简答的啊

img

仅供参考:

void HexDump(char *buf,int len,int addr) {
    int i,j,k;
    char binstr[80];

    for (i=0;i<len;i++) {
        if (0==(i%16)) {
            sprintf(binstr,"%08x -",i+addr);
            sprintf(binstr,"%s %02x",binstr,(unsigned char)buf[i]);
        } else if (15==(i%16)) {
            sprintf(binstr,"%s %02x",binstr,(unsigned char)buf[i]);
            sprintf(binstr,"%s  ",binstr);
            for (j=i-15;j<=i;j++) {
                sprintf(binstr,"%s%c",binstr,('!'<buf[j]&&buf[j]<='~')?buf[j]:'.');
            }
            printf("%s\n",binstr);
        } else {
            sprintf(binstr,"%s %02x",binstr,(unsigned char)buf[i]);
        }
    }
    if (0!=(i%16)) {
        k=16-(i%16);
        for (j=0;j<k;j++) {
            sprintf(binstr,"%s   ",binstr);
        }
        sprintf(binstr,"%s  ",binstr);
        k=16-k;
        for (j=i-k;j<i;j++) {
            sprintf(binstr,"%s%c",binstr,('!'<buf[j]&&buf[j]<='~')?buf[j]:'.');
        }
        printf("%s\n",binstr);
    }
}


添加一行代码,如下

    int a = 0x11223344;

    //取变量a的地址值
    int* address = &a;

    return 0;

然后按截图步骤,即可以看到变量a的内存十六进制值

img

没看到你填对变量a地址的截图。至少要像这样截图:

img

现在的系统大多使用虚拟内存机制。如果你在内存查看器里输入任意地址,这个地址所在的地址段在这个进程内很可能没有被映射到任何物理内存、设备或文件,因此调试器也就不知道这个地址上的内容是什么,从而只能显示??

printf就能输出16进制的数字,检查一下你的代码吧