Совместное использование памяти в C ++ сбой - PullRequest
0 голосов
/ 13 января 2012

Я использую общую память для хранения некоторых данных с помощью функции shmget.Затем я использую shmat, чтобы прикрепить его и сохранить данные.В следующий раз, когда я присоединяю его, программа вылетает.Каковы возможности, что эта строка:

if((smemPtr = (int*)shmat(sMemId,NULL,0)) != (int *) -1)

вылетает?Мне нужно знать сценарии, при которых эта линия падает.sMemId имеет значение.

1 Ответ

0 голосов
/ 13 января 2012
(int*) (...) != (int *) -1

Указатель на другой объект имеет значение без знака. В этом коде я вижу приведение C-стиля со знаком (отрицательное) к unsigned. Результат зависит от компилятора, платформы и в общем случае - не определено.

...