2011-12-26 6 views
0

私はcを学び始めており、メモリ違反を処理する明確な例は見つかりません。現在、私は変数と配列を使用するコードを書いています。cのデータ違反を処理しています

私は変数に値を代入して、配列に初期値のセットを設定します。ただし、配列内の値の1つが変数と同じアドレスに保存されているため、変数を上書きします。

いくつかのいずれかが私にこのようなエラーを処理するか、このようなエラーを回避する方法の簡単な例を与えてもらえます....おかげ

+1

いくつかのコードを提供できますか? – Odys

答えて

2

は、これは推測ですが、あなたの問題はかなりいるようです。
配列の境界を超えて上書きしています。

Cは、割り当てられた配列の範囲を超えて書き込みを防ぎません。あなたはプログラマとして、そうしないようにしなければなりません。そうしないと、未定義の動作が発生し、プログラムが正常に機能しない可能性があります。例えばのために

int arr[10]; 

10整数の配列と有効な添字の範囲は0から9にある宣言し、あなたがあなたのプログラムを確実にしなければならない
は、有効な添字を使用しています。

3

Cでメモリ違反のようなエラーが発生すると、それを '処理できません。だから、まずそれを避けなければならない。あなたがしたいことをする方法は次のとおりです:

int a[10]; 
int i; 
for(i = 0; i < 10; i++) 
    a[i] = 5; 
+0

最初にメモリ違反を回避することは可能ですか?つまり、アレイの各アドレスが空きであり、すでに使用されていないことをアレイを定義するときに確認することが可能です。もしそうなら、どうすればいいのでしょうか....ありがとう – Ranjeet

+0

"配列の各アドレスが空きで、まだ使用されていないことを配列定義時に確認する"というようなことはありません。 'int [10]'と言うと、10個の要素すべてがそこにあることが保証され、使用できるようになる完全に有効な配列が与えられます。しかし、10を超えない。 –

関連する問題