0

Java は、バッファ オーバーフローをどのように防ぎますか? 「ArrayIndexOutofBounds」をスローするだけですか?C++ とどう違うのですか? Java ではなく C++ に bufferoverflow があるのはなぜですか?

4

3 に答える 3

3

覚えておくべきポイントは、「バッファ オーバーフロー」は、システムをハッキングするために使用されるトリックの名前であり、一般的なプログラミング エラーの名前でもあるということです。

Java は、境界外の配列にアクセスしようとするたびに常に例外をスローすることにより、「バッファ オーバーフロー」と呼ばれる一般的なプログラミング エラーからプログラマを保護します。ArrayIndexOutofBounds

Java は、割り当てられたメモリの境界外にアクセスしようとしてもメモリが破損しないようにすることで、「バッファ オーバーフロー」と呼ばれる一般的なハッキング手法からシステムを防御します。

C および C++ は、未割り当てメモリへのアクセスを許可し、このアクティビティの影響undefined.


Java 言語仕様 - 第 11 章を参照してください。例外:

プログラムが Java プログラミング言語のセマンティック制約に違反すると、Java 仮想マシンはこのエラーを例外としてプログラムに通知します。

このような違反の例は、配列の境界外にインデックスを作成しようとすることです。...

私の強調。

于 2013-09-06T14:41:31.017 に答える