Необработанное исключение по адресу 0x764F135D (kernel32.dll) в файле RFNReader_NFCP.exe.4448.dmp: 0xC0000005: место записи нарушения прав доступа 0x00000001.
void Notify( const char* buf, size_t len )
{
for( auto it = m_observerList.begin(); it != m_observerList.end(); )
{
auto item = it->lock();
if( item )
{
item->Update( buf, len );
++it;
}
else
{
it = m_observerList.erase( it );
}
}
}
значение переменной item в окне отладки: item shared_ptr {m_interface ="10.243.112.12" m_port="8889" m_clientSockets={ size=0 } ...} [3 сильных ссылки, 2 слабые ссылки] [по умолчанию] std::tr1::shared_ptr
но в item->Update(): элемент(это) стать нулевым!
Зачем??
this
, истекло, и вы не проверяете это. - person IdeaHat   schedule 09.09.2013erase()
), иlock()
правильно используется для созданияshared_ptr
. Единственным подозрительным моментом является то, чтоbuf
является указателем (почему бы не сделать егоvector<char>
илиstring
?). Попробуйте прокомментировать вызовUpdate()
и посмотрите, изменится ли поведение. - person DanielKO   schedule 09.09.2013this
недействителен (0x00000001), т.е. объект был уничтожен. Для уничтоженного объекта была вызвана функция-членNotify
. - person Igor R.   schedule 11.09.2013this
находится в кадре стекаUpdate
, а не в кадреNotify
. Более вероятно, что рама стека была разбита. - person Useless   schedule 11.09.2013