2012-05-09 8 views

答えて

7

メモリがすでに新しい配置使用したい割り当てられているので:

void * ptr = shmat(shmid, 0, 0); 
// Handle errors 
MyClass * x = new (ptr) MyClass; 

その後、MyClassの新しいインスタンスがptrが指すメモリに構築されます。

オブジェクトが不要な場合は、(メモリを解放せずに)デストラクタを手動で呼び出す必要があります。

ptr->MyClass::~MyClass(); 
6

オブジェクトは、新しい配置を使用して任意の適切な整列ストレージに作成することができます。

void* storage = get_aligned_shared_memory(); 
T* object = new (storage) T(); 

言った - あなたは、このようなこのためBoost.Interprocessとしてライブラリを使用して検討しました。

+0

私が探していたライブラリです。 – kravemir

関連する問題