в процессе P1: < /strong> < /p>
Код: Выделить всё
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));
< /code>
в процессе P2: < /strong> < /p>
hMapFile hMapFile = OpenFileMapping("Global\\MyFileMappingObject")
SharedStruct *pSharedStruct_P2 = (SharedStruct *) MapViewOfFile (hMapFile,...)
...
pSharedStruct_P2->pData is a local P1 memory adress which cannot be used by P2
Reflection:
is the Использование общих воспоминаний ограничено только основными типами (int, float, ...)? или есть еще одно использование общих воспоминаний для поддержки обмена местными адресами?
Подробнее здесь: https://stackoverflow.com/questions/600 ... pecificity