Доброго всем времени суток. Использую boost::interprocess::shared_memory_object для выделения общей памяти при межпроцессном взаимодействии, но shared_memory_object живёт в библиотеке и при вызове boost::interprocess::shared_memory_object::remove программа падает, если этот же код выполнить просто в исполняемом файле, то всё пройдёт отлично. Подскажите что я делаю не так?
Нижеприведённый код будет работать в исполняемом файле, но упадёт при remove (последняя строка), если его вынести в библиотеку
namespace bip = boost::interprocess;
std::unique_ptr pMem = std::make_unique<bip::shared_memory_object>(bip::create_only, "Name", bip::read_write);
pMem->truncate(4);
std::unique_ptr pMemReg = std::make_unique<bip::mapped_region>(*pMem.get(), bip::read_write);
char *ar=nullptr;
ar = static_cast<char*>(pMemReg->get_address());
std::memset(ar,0,4);
ar[0]=1;
ar[1]=2;
bip::shared_memory_object::remove("Name");
Похоже проблема проявляется только под виндой, под линуксом всё работает