1

私はコンピューターを使用する中で多くのエラーを見てきましたが、それらの多くは、読み取り不可能なメモリまたは 0x00000000/0xFFFFFFFF へのアクセス違反の例外呼び出しのようです。

これはどのようなプログラミングエラーが原因ですか? 何かがうまくいかないときにプログラムをクラッシュさせるのは意図的なことですか?

4

2 に答える 2

3

一部の言語では、null ポインターの逆参照 (非常に一般的なエラー) が原因である可能性があります。

于 2009-09-26T05:36:33.180 に答える
3

間違いなく「物事が非常にうまくいかないときにプログラムをクラッシュさせることを意図している」わけではありません-彼らはそのために exit(error_code) に相当する言語を呼び出すだけです...メモリ内のどこかをランダムにジャンプしてクラッシュさせたくありません.

基本的には、プログラムがオペレーティング システムで許可されている範囲外のメモリ位置を読み込もうとしていることを意味します。

これには、言語である種のポインタの概念が必要であり、ポインタのメモリ アドレスが不適切な値に設定されています。これは、ポインターの値をそれが指している int のアドレスに設定するのを忘れ、代わりにint が保持する値に設定するなどの原因で発生する可能性があります。これは、データ/入力処理が悪いことが原因である可能性があります.256バイトを保持できる配列を作成し、265バイトを読み取ります.ポインタ値が配列の後のメモリ位置にあったため、'こぼれた配列の末尾は、ポインターがあったメモリ位置にあります-そのため、次にそのポインターにアクセスすると、ランダムなデータでいっぱいになりますが、メモリアドレスのように扱われます. (これを意図的にハッキングすることを「バッファ オーバーフロー攻撃」と呼びます)。

于 2009-09-26T05:51:45.370 に答える