C++ 显示12位十六进制值的GDB打印命令

C++ 显示12位十六进制值的GDB打印命令,c++,ubuntu,gdb,C++,Ubuntu,Gdb,我已经在VirtualBox上安装了Ubuntu,我正在终端上为我的一项任务调试一个程序。在数组上使用print命令时,它会给我一个12位的十六进制值,如0x7fffffffdea4。我正在调试的代码是用C编写的++ #include <iostream> using namespace std; int main() { int i, x[5]; int *ptr_x; cout << "Enter 5 integers"; for

我已经在VirtualBox上安装了Ubuntu,我正在终端上为我的一项任务调试一个程序。在数组上使用print命令时,它会给我一个12位的十六进制值,如
0x7fffffffdea4
。我正在调试的代码是用C编写的++

#include <iostream>
using namespace std;

int main() {
    int i, x[5];
    int *ptr_x;

    cout << "Enter 5 integers";
    for (i=0;i<5;i++) {
        cin >> *ptr_x;
        ptr_x++;
    }
}
#包括
使用名称空间std;
int main(){
int i,x[5];
int*ptr_x;
cout*ptr_x;
ptr_x++;
}
}
当我使用
print&x[0]
时,我会得到一个12位的十六进制值。我应该使用
x/x
来显示内存地址的内容,但它说我无法访问它。是否有一个设置我忘记设置,因为我认为我应该得到一个8位的十六进制值,而不是一个12位的十六进制值


在数组中打印后续元素只会更改最后4位,所以我认为前几位可能是填充符?这是怎么回事?

因为您的程序是64位的,所以地址是12位。如果您希望地址为8位,请将其构建为32位程序。顺便说一句,
ptr\u x
没有初始化,你确定它是正确的吗?代码是在作业中给我的,我可能输入错误。回到您所说的将程序构建为32位。我该怎么做?用-m32调用gcc。64位系统通常有64位指针,其结果是64/4=16个十六进制数字。我被告知要使用的命令是
g++-g arr1\u ptr.cc-o arr1
。如果我添加-m32,是否是正确的命令
g++-g-m32 arr1_ptr.cc-o arr1
?@Skynet:您应该先尝试一下。