• ベストアンサー

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

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

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

  • ベストアンサー
  • zwi
  • ベストアンサー率56% (730/1282)
回答No.3

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

a310dsaiep
質問者

お礼

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

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.2

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

a310dsaiep
質問者

お礼

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

すると、全ての回答が全文表示されます。
回答No.1

方法はOS依存です。 Windowsなら Win32APIでCreateFileMapping 使うとか。

a310dsaiep
質問者

お礼

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

すると、全ての回答が全文表示されます。

関連するQ&A