当我输入方法 A 时,它会导致缓冲区溢出,但当我返回时,它运行良好。我认为 throw 将执行转移到调用者方法,所以它去的地址应该与返回地址相同,但我显然错了。有没有办法在 Visual Studio 调试器中查看抛出的地址?
谢谢
Berkus:这是否意味着上层调用方法的堆栈已损坏?例如,
Method A calls
Method B calls
Method C. Method C throws an exception
那么,有可能是方法C的返回地址没问题,但方法B的返回地址损坏,导致缓冲区溢出?我看到的是,如果没有抛出,我的应用程序运行良好,所以我认为方法 A、B 和 C 都有有效的返回地址。