Общая память: давайте поговорим о ее спецификеC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Общая память: давайте поговорим о ее специфике

Сообщение Anonymous »

Давайте рассмотрим следующий псевдо-код между двумя процессами p1 < /strong> и p2 < /strong>:

в процессе 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,...)
...
The problem:[/b]

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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»