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

締切り済みの質問

共有メモリ メモリマップドファイルについての質問です。

共有メモリ メモリマップドファイルについての質問です。

visual C++ を用いて、異なるアプリケーション間でデータを共有するプログラムを作っています。
ネットで検索してみたところその内容を説明しているホームページがいくつかあったのですが、どうしても完成にたどり着くことができません。

どのようにしたらよいのでしょうか??

投稿日時 - 2010-07-26 13:01:34

QNo.6065136

困ってます

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

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

回答(3)

ANo.3

こんなサイトがありました。
http://homepage2.nifty.com/c_lang/intro2/no_114.htm

メモリマップファイルについては、私自身はFile I/O代わりに使ったことはありますが、共有の場合は排他制御が必要になるかもしれませんね。

投稿日時 - 2010-07-28 20:38:41

ANo.2

基本的には
(1)CreateFileMapping関数でメモリマップドファイルを生成
(2)MapViewOfFile関数でメモリマップのアドレスを取得

共有メモリ使用

(3)UnmapViewOfFile関数でメモリマップを解放
(4)CloseHandleでメモリマップドファイルのハンドルを解放

という流れです。Mutexとかセマフォで排他制御する場合もありますが、使用状況によっては必須ではありません。

(1)の時に同じ名前を指定すれば複数のプロセスでメモリを共有することが出来ます。
この名前はプログラミングの設計上の約束事だから、アプリが違えば同じ名前がわからないとかアホなことは言わないように。
(2)は共有メモリの構成をどう使うかあらかじめきちんと設計しておかないと齟齬をきたすことになりますので注意。

排他制御の多くは双方から同時に書き込んだらデータに齟齬が生じるとか、そんなところから必要が出て来るので、それぞれの書き込み場所をわけてデータのやり取りを一方通行にする場合はとくに必要ないでしょう。

投稿日時 - 2010-07-26 15:55:42

ANo.1

どんな目的でデータの共用をしたいのですか?
別々のプロセス間なのか、Windowアプリで親は同じなのかとか。

投稿日時 - 2010-07-26 13:51:59

あなたにオススメの質問