Closed. This question is off-topic. It is not currently accepting answers. Learn more
想改进这个问题吗?Update the question所以堆栈溢出的值小于aa>。
每当我调用scanf时,我的程序就越界了。
我不明白为什么。
请帮忙。
谢谢。

.L2:
leal    -4(%esp)        ,%esp
leal    -4(%ebp)        ,%eax
pushl   %eax
pushl   readChar                #"%c"
call    scanf               #call scanf for the char

(gdb) info registers
 eax            0xffffced0  -12592 #the correct address of the place we want to insert the parameter

最佳答案

这是一个常见的错误。问题在于这句话

pushl   readChar

这将推送readchar中的long值,而不是readchar的地址。你需要的是:
pushl   $readChar

注意美元符号(“$”)。

关于linux - 程序收到信号SIGSEGV,分段故障。当我调用scanf时,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34285416/

10-11 16:39