.NET でのバッファ オーバーフロー エラーの一般的な原因を探しています。
マネージド .NET コードではバッファ オーバーフローが不可能であることはわかっています。ただし、.NET アプリケーションの範囲内では、この例外が引き続き発生する可能性があります。
思ったこと -
- COM オブジェクト呼び出しに対する有効な引数
- PInvoke/Win32 呼び出しに対する有効な引数
バッファ オーバーラン エラーをデバッグする最良の方法は何ですか?
コメントから質問へ:
では、.NET でバッファ オーバーラン エラーをデバッグするにはどうすればよいでしょうか。
ほとんどの場合、そもそもデバッグするものは何もありません。つまり、もちろんバグが存在し、それを修正する必要がありますが、バグはコードにはありません。呼び出している管理されていないライブラリにあり、変更することはできません。あなたができる唯一のことは、そのライブラリをそのように使用しないことです。
これが一般的な原因の 1 つで、アンマネージ ライブラリのバグです。
これは、バグのない管理されていないライブラリを呼び出した場合にも発生する可能性がありますが、ライブラリは、バッファのサイズを明示的に伝え、間違った番号を与えることを期待しています。これは修正が必要なコードの問題です。ただし、バッファのサイズを見つけることは通常、バイト配列の .Length プロパティをチェックするのと同じくらい簡単であるため、.Net ではめったに発生しません。