【发布时间】:2016-04-07 15:50:58
【问题描述】:
我有这个基本程序:
int initfunc(int *array, int len) {
int i;
for(i=1; i <= len; i++) {
array[i] = i;
}
return 0;
}
int main(int argc, char* argv[]){
int* myarray=0;
initfunc(myarray,10);
}
首先我想弄清楚 GDB 中的命令是什么来查找 main 存储在哪个内存地址中。
我的错误也在第 4 行 (array[i] = i),我试图弄清楚我需要做什么才能让它运行。我的教授编写了这个程序,所以我知道使用这些指针可能不是编写这个基本程序的好方法。我只需要一些见解,因为我不太擅长指针。
【问题讨论】:
-
如果你编译时打开调试符号,gdb 会直接显示它...
-
@EugeneSh。 , 你是对的哥们。如果您说 GDB 开箱即用地告诉我错误是什么,因为我知道它在第 4 行。指针是为什么它抛出它是我的假设,我只是想清楚它为什么这样做。但是,如果您开箱即用地告诉我 GDB 告诉我函数的内存地址是错误的,因为它告诉我返回错误的函数的内存地址,这不是我需要的,我需要内存另一个特定功能的地址。
-
您想查看
array的值(它指向的位置),而不是函数的地址。 -
两件事:1)你没有为
myarray分配任何内存,所以你尝试写入它是UB。 2) 一旦你分配了内存,C 指针就是 0-indexed;你的for循环应该是i = 0; i < len; i++ -
@mch,好吧,我只需要找出分配给函数 main 的特定内存分配,但我不确定如何。我在它上面设置了一个断点,它返回地址,所以我猜这是怎么做的?我不确定是否有更直接的命令。