Boost shared_ptr assert не удается, но значение не NULL

в одном из моих приложений я получаю исключение assert fail в assert внутри оператора разыменования boost shared_ptr:

T * operator-> () const // never throws
{
BOOST_ASSERT(px != 0); <------ fails!
return px;
}

Проблема в том, что с помощью отладчика я вижу, что значение px отличается от 0, что-то вроде 0x7ff ….! Возможна ли такая ситуация? Как может провалиться утверждение?

Спасибо

1

Решение

Как вы сами говорите, утверждение не нарушается. Вместо этого внутри него возникает исключение. Это не то же самое.

Я думаю, что boost::shared_ptr::px член указывает на неправильную ячейку памяти, и это так, потому что boost::shared_ptr Сам объект недействителен.

Например, ваш boost::shared_ptr используется в качестве члена какого-то класса? Если это так, проверьте, является ли объект действительным (является this действителен, у него повреждена память)?

Обновить:

Хорошо — после вашего разъяснения, что утверждение действительно не удается: вы когда-либо назначаете mysocket или даже звонит mysocket.reset()?

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector