2016-07-17 3 views
0

공유 메모리에 4 개의 '이중'변수 및 'int'변수를 저장하려고합니다.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 개의 double + 1 int는 64 비트 머신에서 '36'의 크기를 제공합니다. –

+0

너는 천재 야! 동일한 정적 캐스트를 사용하여 다른 인스턴스의 데이터를 읽었습니다. 그래서 간단합니다 : D –

+0

@ RawN 그리고 ...? 나는 네가 무엇을 몰고 있는지 잘 모르겠다. 'sizeof (SharedData) '의 정확한 값은 36이나 40이거나 다른 것인데 어떻게 달라 집니까? –