• ベストアンサー

ポインタのミスでOS壊れるのでしょうか?

c言語の開発環境VC++を持っていますがポインタの処理で間違いそうで なかなかコードのケアレスミスが怖くてポインタやmallocを含んだコードを実行できないでいるのですが、そもそもポインタやmallocのコードミスでOSが壊れてos再インストールなどに陥るものなのでしょうか?保護違反などが出てきてパソコン再起動なんかが起こるのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • ultraCS
  • ベストアンサー率44% (3956/8947)
回答No.3

OSが限定されていないので リアルモードのOSであれば、OSとアプリケーションは同じメモリ空間で動作しますから、OSが壊れる場合があります。その際、一般にポートも保護されていませんから、最悪、CMOSなどのシステムパラメータを納めている部分が壊れてしまえば、OSどころか、コンピュータまで不調にしてしまうこともあり得ます。SHARPのX68000には、フロッピードライブをロックして使用不能にしてしまうウィルスというのがありましたから、可能性が全く0ではない(というより、保護されない)と言えるでしょう。 また、各デバイスに登録されていても使えない命令と言うのもあり、通常はOSが保護していますが、偶然、コード領域を破壊してBIOSコールを書き込んでしまってOSを通さないようなコントロールシーケンスが発生した場合、ハードが壊れることはあります。今ではまず使いませんが、8インチフロッピーは5インチや3.5インチの2HDとは完全互換でなく、80トラックにシークを掛けると76トラックまでないため、壊れます。 最近のOSであれば、アプリケーションの実行空間はディスクリートしているので壊れることはないでしょうが、保護違反でブルーが出て再起動は開発中には結構あります。 MS-DOSの頃に、暴走して再起動したら、SYSTEM NOT FOUNDになってHDDごとお逝きになっていたことがありました。それ以来、開発中のプロジェクトのソースやライブラリはすべてサーバに置いて、実行モジュールだけローカルに置く習慣がつきました。 一番怖いのはHDDにアクセスしっぱなしになることで、その場合、結構な頻度でHDDが逝っちゃうことがあります。

w_kiyo123
質問者

お礼

ありがとうございました!

その他の回答 (2)

  • LOHA
  • ベストアンサー率52% (203/388)
回答No.2

>そもそもポインタやmallocのコードミスでOSが壊れてos再インストールなどに陥るものなのでしょうか?保護違反などが出てきてパソコン再起動なんかが起こるのでしょうか? 最近のOSでは絶対に壊れませんし、再起動(ブルースクリーン)することもないと思います。 Windowsの場合は、保護違反をした場合、確か9x系(95,Me,...)ではブルースクリーンになるぐらいで、OSは壊れないですし(私はXP時代の人間なので詳しく知らないので、間違ってるかも…)、NT系(2000,XP,...)は警告がでるだけですね。 >mallocのコードミス mallocはあくまでもメモリを確保するだけの関数ですからOSを壊すとかそういうことは全く関係ないです。おそらく心配されているのはメモリ開放ミスによるメモリリークのことだと思いますが、サーバーのように常駐の場合、致命的になりかねませんが、普通のプログラムであれば、プログラム終了時にOSが勝手にメモリ開放処理をしてくれるので、問題ないです(常駐の場合は、プログラムを終了しないのでどんどんメモリが食われていく、というわけです)。 Linuxはどうかはちょっと分からないのですが、多分大丈夫だと思います。 いずれにせよOSが壊れることはないでしょう。 というわけで、安心してポインタの勉強をしてください。

w_kiyo123
質問者

お礼

ありがとうございました!

  • neKo_deux
  • ベストアンサー率44% (5541/12319)
回答No.1

> OSが壊れてos再インストールなどに陥るものなのでしょうか? > 保護違反などが出てきてパソコン再起動なんかが起こるのでしょうか? 意図的にそういうプログラムを作る事は可能だと思いますが、 > そもそもポインタやmallocのコードミスで が原因でどうこうってのは、Windowsのマインスイーパーの操作ミスでHDDをフォーマットしてしまわないか?とかくらいにあり得ない話で、杞憂かと。 …ファイルをまとめて高速に削除するソフトを作ってた、OSにより近い部分で動作するデバイスドライバなんかを作ってたとかなら、可能性はやや高いですが。

w_kiyo123
質問者

お礼

ありがとうございました!