2016-07-17 16 views
0

Я пытаюсь сохранить четыре «двойных» вара и «int» var в общей памяти.Хранение данных в QSharedMemory

QSharedMemory::data() предлагает указатель на память, которая была отложена create(int size). Мой вопрос: Как я могу соответствующим образом объединить и глубоко скопировать эти данные в общую память, чтобы я мог обращаться к любым его элементам в другой программе для чтения/записи?

Единственная подобная вещь, которую я видел, это разместить значения в QString. Это правильный путь?

Спасибо.

ответ

3

Что-то вдоль этих линий:

struct SharedData { 
    double fourDoubles[4]; 
    int andAnInt; 
}; 

QSharedMemory shared_mem; 
shared_mem.create(sizeof(SharedData)); 
SharedData* p = static_cast<SharedData*>(shared_mem.data()); 
p->fourDoubles[0] = 1.0; 
p->andAnInt = 42; 
+0

не будет ли это возвращение '40' для структуры из-за прокладки? 4 двухместных + один int даст размер '36' на 64-битной машине. –

+0

Вы, сэр, гений! Я использовал тот же статический прилив, чтобы читать данные из другого экземпляра. Так просто: D –

+0

@RawN И ...? Я не совсем уверен, во что вы едете. Как точное значение 'sizeof (SharedData) имеет значение для чего-либо, будь то 36 или 40 или иначе? –