Рассмотрим следующий псевдокод между двумя процессами P1 и P2 :
В процессе P1:
struct SharedStruct
{
int i;
void *pData;
};
HANDLE hMapFile = CreateFileMapping("Global\\MyFileMappingObject")
LPCTSTR pBuf = (LPTSTR) MapViewOfFile(hMapFile, ...)
SharedStruct mySharedStruct;
mySharedStruct.i=33;
mySharedStruct.pData = (void*) calloc (1, 10);
memcpy ( (void*) pBuf, (void*) (&mySharedStruct), sizeof (mySharedStruct));
В процессе P2:
hMapFile hMapFile = OpenFileMapping("Global\\MyFileMappingObject")
SharedStruct *pSharedStruct_P2 = (SharedStruct *) MapViewOfFile (hMapFile,...)
...
Проблема:
pSharedStruct_P2-> pData является локальной памятью P1 адрес , который не может использоваться P2
Reflection:
- это использование общей памяти, ограниченное только типами basi c (int, плавать, ...)? или для совместного использования локальных адресов используется другой общий доступ к памяти?