есть простой кусок кода, который я перешел к основной функции образца приложения, чтобы избежать затрагивающего любых других частей приложения:исключения наддува: межпроцессное, разделяемая память объектого удаление
namespace bi = boost:interprocess;
bi::shared_memory_object::remove("shm");
bi::named_mutex::remove("mtx");
bi::named_condition::remove("cnd");
только первый рэйза линии исключение из внутреннего кода межпроцессного повышения: в windows_intermodule_singleton.hpp, 118 (v 1.60.0) bolded line - это место, где это происходит. Win64, VC v19, Windows 10
...
caster.addr = m;
BOOST_ASSERT((caster.addr_uint64 & boost::uint64_t(3)) == 0);
max_count = boost::uint32_t(caster.addr_uint64 >> 32);
**initial_count = boost::uint32_t(caster.addr_uint64);**
initial_count = initial_count/4;
//Make sure top two bits are zero
BOOST_ASSERT((max_count & boost::uint32_t(0xC0000000)) == 0);
//Set quasi-top bit
max_count |= boost::uint32_t(0x40000000);
...
Любая идея, почему это происходит? может ли это быть связано с моделью памяти x64?