共有メモリを使用して、複数のプログラム間でいくつかのオブジェクトを共有したい。
このサイトで例を見つけました。オブジェクトの割り当てはなく、直接アドレス指定するだけですが、共有メモリに構造体またはクラスを作成したいと思います。
共有メモリを使用して、複数のプログラム間でいくつかのオブジェクトを共有したい。
このサイトで例を見つけました。オブジェクトの割り当てはなく、直接アドレス指定するだけですが、共有メモリに構造体またはクラスを作成したいと思います。
メモリは既に割り当てられているため、配置 newを使用します。
void * ptr = shmat(shmid, 0, 0);
// Handle errors
MyClass * x = new (ptr) MyClass;
次に、 の新しいインスタンスがMyClass
が指すメモリに構築されptr
ます。
オブジェクトが不要な場合は、(メモリを解放せずに) デストラクタを手動で呼び出す必要があります。
ptr->MyClass::~MyClass();
オブジェクトは、配置newを使用して、適切に整列されたストレージに作成できます。
void* storage = get_aligned_shared_memory();
T* object = new (storage) T();
そうは言っても、このためにBoost.Interprocessなどのライブラリを使用することを検討しましたか。