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