- ベストアンサー
ポインタを使ったプログラムのミスでPCは大丈夫?
つまらない質問かとは思いますが、よろしくお願いします。 Cを学習している途中のですが 参考書を読み進め、ポインタの概念に関する章まですすみました。 ポインタへの理解を深めるために 簡単なプログラムを作っているのですが。 *p + i と *(p + i) この二つでは動作が違うために コンパイルはできたものの、暴走をしてしまいました。 iの値がどんどん増えていき、*pに何かを代入するようなプログラムだとしたら メモリにどんどん書き込まれていくと思うのですが その際に、インターネットエクスプローラやアウトルックなどの、ソフトを立ち上げていた場合 影響はないのでしょうか? ソフトを立ち上げていなくても、PCが起動している限り 何らかの値がメモリに保存されていると思うのですが (pcには詳しくないので、違っていたらすみません) 暴走したプログラムが、パソコン内部のなにかに影響を及ぼして PCが使えなくなる!壊れてしまう!? なんてことはあるのでしょうか? これからどんどんPCの知識を得ようと思っているので 書籍など読めばいずれはわかるとは思うのですが パソコンの生命が脅かされるほどの問題だったら!? (だとしたら、参考書に危険だよ!と書いてあるとは思いますが^^;) と思うと心配になったので、質問させていただきます よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
とてもするどい質問だと思います。 現在の Windows とか Linux や Mac OSX といった「近代的な OS」では、プログラムの中から(普通に)アクセスできるメモリは、他のプログラムに影響を与えない(アクセスできない)ようになっているので、自分が作ったプログラムのバグのせいで、同時に実行していた他のプログラムが落ちるということは、一応、起きない事になっています。 ただし、実際にはメモリの量には限りがあって、それを複数のプログラムが分け合って使っているので、あるプログラムがすごーく沢山メモりを使うと、他のプログラムが使うメモリが足りなくなって、結果的に落ちてしまう、ということは起きます。 いずれにせよ、どんなプログラムを書いても、ウイルスのような悪さは出来ても、ハードウェアを壊すような事は、どんなに頑張ってもできませんので、安心してプログラムを書いてください。
その他の回答 (2)
- f_attck
- ベストアンサー率33% (40/118)
まず始めに、PCが壊れることは無いと思います。 基本的にユーザが使用できるメモリ空間とシステムが使用する メモリ空間は違います。 システムが使用するメモリ空間、つまりOSが使用するメモリ空間 なんですが、基本的にはユーザプロセスから触ろうとした場合には segmentation faltとなって、そのプロセスが異常終了するはずです。 また、メモリとはRAMですので電源ONからOFFまでの間に 使用できる記憶素子です。 ですので、再起動すれば問題ないです。 (メモリリーク等の対応は、これでできます)
お礼
早速の回答ありがとうございます。 >基本的にユーザと、システムが使用するメモリ空間は違います。 そうなんですかー知りませんでした。勉強になります。 その解決と同時に、他の悩みが出たのですが (osだけでなく、他のソフトなどへの影響) No.3の方がそこも回答されていたので 2番目の良回答とさせていただきました。 解りやすい回答ありがとうございました!
- guttie5
- ベストアンサー率44% (4/9)
使用しているコンパイラは何でしょうか? 例えば、デバッガを使用している場合は、大抵、そのデバッガがワーク領域を確保しているので、暴走する事はありません。
お礼
早速の回答ありがとうございます。 パソコン用語に詳しくないので、デバッガの意味が解らないのですが 後ほど用語辞書で調べてみます。 今回の件では、PCに影響が無いと言うことで理解しました。 ありがとうございました。
お礼
早速の回答ありがとうございます。 >他のプログラムに影響を与えない(アクセスできない)ようになっているので 他のアプリケーションにも影響がないのですね、安心しました。 解りやすい回答ありがとうございました! 引き続き学習に励んでいきます。