Возвращенный дескриптор полностью действителен для того, чтобы вы могли продолжать его использовать, и вы должны закрыть этот дескриптор, когда закончите использовать его как обычно.Однако закрытие этого дескриптора не приведет к освобождению памяти или выполнению очистки: ваш новый вызов увеличил количество ссылок на общий ресурс, а закрытие просто вернет его к его предыдущему состоянию.
Кажется вероятнымчто есть какой-то другой процесс, все еще использующий разделяемую память, поскольку операционная система должна восстановить ее после фатального завершения процесса.
Вам может понадобиться какой-то способ инициировать самоуничтожение этого другого процесса.Один из способов - зарезервировать небольшой счетчик сердечных сокращений в регионе.Если один из процессов обнаруживает, что другой не обновил недавно счетчик пульса, он также должен прервать работу, высвободив общий ресурс.
Возможно, ваш другой процесс на самом деле не умер, но находится в фатальном цикле или безнадеженожидание, состояние.Чтобы выйти из этого случая, вы можете сохранить все идентификаторы процессов в общей области, и любой новый процесс с доступом к общей области может затем УБИТЬ всех старых участников.