我正在尝试了解堆栈是如何工作的,所以我编写了一个非常简单的C程序来运行GDB并检查堆栈:
int main(int argc, char **argv)
{
char buf[100];
strcpy(buf, argv[1]);
}
我编译了程序并在GDB中为main()函数的开头设置了一个断点。我对堆栈在执行中应该如何看待的期望是:
降低内存地址... | ebp = esp =堆栈帧指针|返回地址| argv |弧| ......更高的内存地址
随着程序的进行,堆栈将在较低内存地址的方向上增加(为bur局部变量分配100个字节)
看看GDB,情况似乎并非如此。
argv在哪里?任何人都可以看看我的屏幕截图并帮助我做出正面或反面的事情吗?
谢谢!