调用者和被调用者的参数有何不同?

How can an argument be different in the caller and the callee?

我正在调试一个程序,运行 遇到了我以前从未见过的东西。以下是摘自 gdb.

1236            size = init_text_buffer(fn);
(gdb) p fn
 = 0x7fff1cd22d80 "-"
(gdb) s
init_text_buffer (fn=0xd00 <error: Cannot access memory at address 0xd00>)
    at editors/vi.c:720
720 {

函数 init_text_buffer 使用值为 0x7fff78136bd0char 指针调用。当我进入函数时,参数突然有了不同的值。

这可能是什么原因造成的?我不是要你调试我的代码(我没有包括任何代码,所以你怎么能?),我只需要一个指向正确方向的指针。这件事让我完全不知道要寻找什么。

您应该进入混合汇编模式 (Ctrl+x 2) 并执行 stepi 以检查实际执行了哪些指令。我最近有这个——在我的例子中,这是 C 代码当然没有透露的优化。在您的情况下,它可能会显示内存溢出。

值得一试。