こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

C++でメモリの絶対番地を指定する方法はありますか。

C++でメモリの絶対番地を指定する方法はありますか。
あるプログラムでメモリの指定した番地にデータを書き込み、別のプログラムで同じ番地のデータを読み込めるようにしたいと思ってます。プログラムは作ったのですが、絶対番地を指定していないようで、別のプログラム側で同じ番地を指定しても同じデータが読み込めません。

投稿日時 - 2010-05-03 12:19:24

QNo.5868106

暇なときに回答ください

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

仮想記憶が働いてるマルチプロセスOS(WindowsやLinux)は、メモリ空間が完全に独立していますのでプログラム(プロセス)間でメモリ内容を相互参照するには特別な仕組みが必要です。メモリを共有する場合は、同期処理も合わせて必要ですので注意してください。

WindowsAPIの場合のサンプル
http://nienie.com/~masapico/api_CreateFileMapping.html

投稿日時 - 2010-05-03 13:58:35

お礼

番地を指定してデータの取得が出来ました。ありがとうございます。

投稿日時 - 2010-05-03 17:02:20

ANo.3

このQ&Aは役に立ちましたか?

15人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

一般的な方法はありません。
ただし、よく使われる方法としては次の二種類です。

1. アドレスをポインタ型にキャストする。
2. asm宣言を使う。

ところで、メモリの絶対番地とCPUの絶対番地はふつう異なります。
メモリの絶対番地を指定するためには、CPUのメモリマップとメモリデバイスの構成を正確に理解しなければなりません。
MMUを使っている環境であれば、仮想アドレスではなく物理アドレスを元にメモリの絶対番地を割り出す必要があります。
これらを踏まえると、環境によっては上記の二種類の方法だけでは済まないことがわかるかと思います。

投稿日時 - 2010-05-03 13:14:08

お礼

参考になりました。ありがとうございます。
APIを利用してデータを取得しました。

投稿日時 - 2010-05-03 17:10:34

ANo.1

方法はOS依存です。

Windowsなら
Win32APIでCreateFileMapping
使うとか。

投稿日時 - 2010-05-03 12:36:24

お礼

APIを使用しデータ取得できました。ありがとうございます。

投稿日時 - 2010-05-03 17:11:34

あなたにオススメの質問