ここから本文です

パソコン初心者です。 C言語で配列を間違える(int test[5] としておきながら ...

rur********さん

2010/8/410:51:53

パソコン初心者です。

C言語で配列を間違える(int test[5] としておきながら test[10]に値を代入する)

と、プログラムが暴走すると聞いたのですが

その暴走によって何が起こるのでしょうか?

今、私は「Microsoft Visual C++ 2010 Express」というのでプログラムの勉強をしているのですが

その暴走の被害はそのソフト外にまで及ぶのでしょうか?(データが消えるなど)

プログラムに詳しい方教えてくださいm(__)m

散文失礼しました。

閲覧数:
220
回答数:
4

違反報告

ベストアンサーに選ばれた回答

ii3********さん

2010/8/411:19:14

暴走するかしないかは、その時々によって異なります。

int test[5]とすると、そのプログラム専用の5つのデータを入れる場所を、メモリ上に確保します。
間違ってtest[10]に値を入れると、メモリ上に確保していない場所にデータを書き込むことになります。

このとき重要なのは、「確保していない場所を誰が使っているか?」です。
その場所を他のどのプログラムも使っていなかければ、特に問題は起きません。
しかし、何らかのプログラムが使っていたら、そのプログラムのデータを書き換えることになりますい。
データを書き換えられてしまったプログラムは正しく動かなくなるので、エラーが起きます。
もしこれがOSのデータが入っている場所だったとすれば、コンピュータ全体に異常が波及し、ブルースクリーンなどが発生します。

質問した人からのコメント

2010/8/4 11:59:40

感謝 こんなにたくさんの方に回答していただけて、とても嬉しいです。
みなさん本当にありがとうございました。

今回は僕的に一番理解しやすかった回答をしてくださったii3pvy63さんを
ベストアンサーにえらばせていただきました。

ベストアンサー以外の回答

1〜3件/3件中

並び替え:回答日時の
新しい順
|古い順

jih********さん

2010/8/411:44:15

安心して下さい Windows NT,2000,XP,Vista,Sevenは強力なメモリ保護が働いているので自分のプログラムが落ちるだけで、他のプログラムには影響はありません。

メモリ保護が無いOSですと、暴走してOSと共に落ちてしまうことがありましたが、メモリ保護がついていれば安心です。


しかし、OSも人が作った物です。 100%信用することは避けましょう。 プログラムで実験するときは以下の配慮をおすすめします。

・大切なデータを編集中にプログラミングで遊ばない、保存してからにする
・出来れば別のパソコンでプログラミングを行う事を推奨


です。 また、宣言をしていない領域を書き換えたり読み出したりする事は「マナー違反」だと考えてください。(つまり、泥棒や強盗とおなじ)

f_s********さん

編集あり2010/8/411:49:35

9割の確率で、自らのAPがこけるかまたは暴走(ループ)します。
残り9%の確率で他APにも影響を与えます。例えば、
解放したハンドルを再利用し、それがたまたま他APが使用中だった場合
1%の確率でデータが消えることもありますが、ほぼ可能性はないです。

pyo********さん

2010/8/411:18:52

未定義
実行してみないとわからない。

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる