C++ 显示12位十六进制值的GDB打印命令
我已经在VirtualBox上安装了Ubuntu,我正在终端上为我的一项任务调试一个程序。在数组上使用print命令时,它会给我一个12位的十六进制值,如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
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:您应该先尝试一下。