40:30 очень серьёзная ошибка. Не нужно быть уверенным что объект не expired, более того, вообще писать if (!ptr.expired()) x = ptr.lock(); Это ГОНКА. Потому что вообще то lock атомарно делает инкремент, а между вызовами .expired() и .lock() может на другом потоке он таки стать expired и будет сегфолт при обращении по непроверенному shared ptr
Огромное спасибо, только сегодня Вас нашел, буду смотреть.
Что мне ютуб рекомендует в 2 часа ночи :
И это прекрасно
40:30 очень серьёзная ошибка. Не нужно быть уверенным что объект не expired, более того, вообще писать
if (!ptr.expired())
x = ptr.lock();
Это ГОНКА.
Потому что вообще то lock атомарно делает инкремент, а между вызовами .expired() и .lock() может на другом потоке он таки стать expired и будет сегфолт при обращении по непроверенному shared ptr
классный разбор