メソッド A をスローすると、バッファ オーバーランが発生しますが、戻ると正常に動作します。throw は実行を呼び出し元メソッドに移動するので、それが行くアドレスは戻りアドレスと同じでなければならないと思っていましたが、明らかに間違っています。Visual Studio デバッガーでスローされるアドレスを確認する方法はありますか?
ありがとうございました
Berkus: これは、上位の呼び出し元メソッドのスタックが壊れているということですか? たとえば、
Method A calls
Method B calls
Method C. Method C throws an exception
次に、メソッド C のリターン アドレスは問題ないのに、メソッド B のリターン アドレスが破損し、バッファ オーバーランが発生する可能性はありますか? 私が見ているのは、スローがない場合、私のアプリケーションは正常に実行されるため、メソッド A、B、および C はすべて有効なリターン アドレスを持っていると思います。