问题描述
请考虑以下程序:
#include <stdio.h>
#include <stdlib.h>
int func(int arg1)
{
int arg2;
arg2 = 0;
return 1;
}
int main()
{
func(2);
return 0;
}
使用-g运行gcc并启动gdb,然后查看rbp,arg1和arg2的地址,这是给我的:
Breakpoint 1,func (arg1=2) at test.c:8
8 return 1;
(gdb) p &arg1
$1 = (int *) 0x7ffffffedc6c
(gdb) p &arg2
$2 = (int *) 0x7ffffffedc7c
(gdb) i r rbp
rbp 0x7ffffffedc80 0x7ffffffedc80
期望:arg1的地址应该大于rbp,而arg2的地址应该小于rbp。 (我用它来了解堆栈框架:Link
发生了什么:两个地址都小于rbp。
我理解错了什么?
在Ubuntu WSL上运行。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)