1

私はCプログラミングの専門家ではありませんが、ここに私が取り組んでいるコードがあります

static char gszBuf[10] ="1234567890";
#define       LS_MAX_STRING    255
LoadDatatoBuffer(id, gszBuf, LS_MAX_STRING); 
// this method will load the data wrt ID to gszBuf

上記のメソッドが 10 文字を超える char 文字列をロードすることを考慮します。つまり、gszBuf = "abcdefghijklmnopqr";

上記のコードは、msdev 6.0 で問題なく実行されます。しかし、上記のデータをコピーしようとすると、Visual Studio 2010 を使用して作成された同じアプリケーションがクラッシュします。私の質問は、上記のコードが msdev 6.0 で機能するようになった理由と、Visual Studio 2010 で実行できなかった理由です。

4

2 に答える 2

1

VS2010 がコードを「クラッシュ」させたことに感謝する必要があります。
バッファ オーバーランが発生した場合は、ハッカーにバッファ オーバーフローを悪用させるよりも、できるだけ早くクラッシュさせることをお勧めします。

VS2010 にはいくつかのセキュリティの改善とバッファ オーバーフロー チェックがあります。コードの品質を向上させ、バッファ オーバーラン関連のバグを修正する機会と考えてください。

于 2015-11-24T12:20:11.243 に答える