
読み込み中にアクセス違反が発生しました、と出ます。これを回避することはできますか?
C++でプログラミングをしています。
現在、ポインタ(p)に入れたアドレスをずらしていって、メモリの任意の位置の値を表示する、というプログラムを制作しています。
具体的に言うと、上記のプログラムではない別のプログラムを実行し、そのプログラムで宣言した変数のアドレスを表示させます。そしてそのプログラムが動いている最中に、上記のプログラムを起動させ、ポインタpにその変数のアドレスを代入して、表示させようとしました。
しかし、止まってしまいます。デバッグしてみると、「test.exe の 0x00024ad5 でハンドルされていない例外が発生しました: 0xC0000005: 場所 0x0014fde8 を読み込み中にアクセス違反が発生しました」と出ます。
なんとかこれを回避して、ポインタに代入したアドレスを表示さすことはできませんか?
宜しくお願いします。
ちなみに、自分がかなり妙なことをしているのは自覚しているつもりです。
No.3ベストアンサー
- 回答日時:
#2です。
もう少し突っ込んで話をすると、今のOSはたいてい仮想アドレス方式で各プロセスのアドレス空間はそのプロセス内でのみ有効なものです。
つまり、プロセスAの0番地とプロセスBの0番地は値は同じでも全く別の箇所を指しているということです。
ですが、プログラムの中には複数プロセスで協調動作させる等の理由により質問のような他プロセスが扱うメモリの中身を参照・変更したい場合があります。
それを実現するのが共有メモリ等の機構である訳です。
No.1
- 回答日時:
> 具体的に言うと、上記のプログラムではない別のプログラムを実行し、そのプログラムで宣言した変数のアドレスを表示させます。
そしてそのプログラムが動いている最中に、上記のプログラムを起動させ、ポインタpにその変数のアドレスを代入して、表示させようとしました。一般的にそういうアクセスはOSが禁じているので出来ません。OSがエラーを出しているのでC/C++のプログラミングの問題ではありません。
自作OSとかでそういう保護機能がない場合は可能でしょうけど。欲しければ自分で作ってください。
共有メモリ等の機能を使えば、その範囲でなら可能となりますが、OSの記載が無いのでそれ以上はなんとも言えません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
<unistd.h>をVisualStudioでつかえるようにする
C言語・C++・C#
-
アプリケーション終了時例外エラー(アクセス違反)の調査方法について
C言語・C++・C#
-
C#、C++間のDLLの呼び出しについて
C言語・C++・C#
-
-
4
デバッグ中のエラーのことで教えてください。
C言語・C++・C#
-
5
ダイアログの上のテキストボックスの、初期値を設定する方法が分かりません・・・・
C言語・C++・C#
-
6
エディットボックスの入力制限について
C言語・C++・C#
-
7
バッファとは何ですか
C言語・C++・C#
-
8
画面を強制的に再描画させる方法
C言語・C++・C#
-
9
Run-Time Check Failure #3というエラーが出ます。
C言語・C++・C#
-
10
「読み込み違反」が起きたときのデバッグ方法
C言語・C++・C#
-
11
クリティカルエラー Expression: (Buffer too small", 0)"
C言語・C++・C#
-
12
ハンドルされていない例外とアクセス違反
C言語・C++・C#
-
13
ハンドルされていない例外が発生しました
C言語・C++・C#
-
14
配列を使わずに、変数名を動的にループで回したい
C言語・C++・C#
-
15
メモリの初期値
C言語・C++・C#
-
16
静的でないメンバ関数の呼び出しが正しくありません
C言語・C++・C#
-
17
エディットコントロールでEnter押した時の動作
C言語・C++・C#
-
18
適切な変換関数が存在しない???
C言語・C++・C#
-
19
CString から LPCTSTRの型に変換
C言語・C++・C#
-
20
CStringからchar*への型変換について教えてください。
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
あるプログラムのコマンドライ...
-
Excelで4096点以上のFFTの方法
-
OS入ってる機器のソフト・アプ...
-
excelのexe化について
-
VB.NETで、プログラム上から新...
-
Excelに埋め込んだVBAのプログ...
-
WORD印刷できるがEXCE...
-
未使用の変数を一括検索する方法
-
COMポートが開けません。
-
自動クエリとはどういうもので...
-
C言語で、文字をbmp形式の画像...
-
eepromについて
-
C言語でプロセスをWAITさせる方...
-
クリックするとページ内で説明...
-
プログラム とシステムの違い
-
「Outlookが他のプログラムによ...
-
グラフをC#のASP.net MVCで表示...
-
タスクスケジューラで失敗と判...
-
TMBMSRV.exeによるCPU使用率上昇
-
複数のexeファイルの同時セット...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
あるプログラムのコマンドライ...
-
銃を発砲するならともかく、日...
-
Excelで4096点以上のFFTの方法
-
VBAにてメール作成した際、一部...
-
読み込み中にアクセス違反が発...
-
OS入ってる機器のソフト・アプ...
-
PICマイコンのコピー(クローン...
-
Vba UserFormを前面に出す方法...
-
未使用の変数を一括検索する方法
-
ドロップダウンリストの文字を...
-
powered byの表記について
-
VBAでユーザーフォームが自動的...
-
XnViewにwebpを「いつも開く」...
-
「Outlookが他のプログラムによ...
-
Excelに埋め込んだVBAのプログ...
-
自動クエリとはどういうもので...
-
UWSCで指定のフォルダを開きたい。
-
TMBMSRV.exeによるCPU使用率上昇
-
バッチ、vbs等でのソフトウェア...
-
Pro*Cで動的SQLを実現する為の...
おすすめ情報