• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:読み込み中にアクセス違反が発生しました、と出ます。これを回避することは)

アクセス違反が発生する問題の回避方法とは?

このQ&Aのポイント
  • アクセス違反が発生する問題について、回避方法を知りたい。
  • C++でポインタを利用したプログラムを実行しているが、アクセス違反が発生して停止してしまう。
  • ポインタに代入したアドレスを表示するために、アクセス違反を回避する方法を教えてほしい。

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

  • ベストアンサー
  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.3

#2です。 もう少し突っ込んで話をすると、今のOSはたいてい仮想アドレス方式で各プロセスのアドレス空間はそのプロセス内でのみ有効なものです。 つまり、プロセスAの0番地とプロセスBの0番地は値は同じでも全く別の箇所を指しているということです。 ですが、プログラムの中には複数プロセスで協調動作させる等の理由により質問のような他プロセスが扱うメモリの中身を参照・変更したい場合があります。 それを実現するのが共有メモリ等の機構である訳です。

sakura_9988
質問者

お礼

成程、そういうことですか。 わざわざありがとうございました。

その他の回答 (2)

  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.2

別のプログラムのアドレス空間にはアクセスできません。 そういうことをやるには共有メモリを使ってください。

回答No.1

> 具体的に言うと、上記のプログラムではない別のプログラムを実行し、そのプログラムで宣言した変数のアドレスを表示させます。そしてそのプログラムが動いている最中に、上記のプログラムを起動させ、ポインタpにその変数のアドレスを代入して、表示させようとしました。  一般的にそういうアクセスはOSが禁じているので出来ません。OSがエラーを出しているのでC/C++のプログラミングの問題ではありません。  自作OSとかでそういう保護機能がない場合は可能でしょうけど。欲しければ自分で作ってください。  共有メモリ等の機能を使えば、その範囲でなら可能となりますが、OSの記載が無いのでそれ以上はなんとも言えません。

sakura_9988
質問者

お礼

ありがとうございました。参考にします。