hollow各位程序猿,当我们学习编程时有没有和我一样有这种困惑 比如变量是如何创建的? 为何局部变量是随机值? 函数返回调用是如何传递参数? 和函数是如何返回的? 这里我用的编译器是VS2019接下来我将带着大家了解函数栈帧是如何创建销毁 注:函数栈帧创建销毁每个编译器不一定会相同 如有疏漏之处欢迎大佬指出和讨论,瑞斯拜 瑞斯拜 此时我们创建一个函数并且调用它 而调用函数就会用到寄存器此时我们用到的寄存器有这两个 esp ebp 此时我们内存空间里的栈区里面是这样 然后开始函数调用此时内存中ebp开始压栈 下一步然后内存中ebp和esp开辟了为main函数所创建变量的空间 此时main函数开始创建变量 Add函数,开始调用计算计算完成的值赋给eax,此时我们的计算已经完成,接下来调用的值开始返回 这时esp的值从esl开始返回函数,esp每次增加4字节直到返回到edp所在位置,edp将值赋予esp,esp所处地址在下到edp,esp再增加4 字节,然后执行ret返回call指令的下一行 最后一步main函数返回栈帧 这就是今天给大家图解的如何创建销毁函数栈帧, 希望可以帮到大家,如有错误欢迎指出 轻点喷 各位大佬们 哈哈 求点赞 求点赞 求点赞 素质三连