unique_ptr не нулит указатель перед выполнением get_deleter()(get()) как это делает reset(), так что если эффектом get_deleter()(get()) будет reset() над тем же unique_ptr, получится double free
Странно видеть непонимание термина «си с классами». С++ сочетает в себе три большие части, плохо сочетающиеся: 1) си с классами, 2) исключения, 3) фп на шаблонах.
Странно видеть непонимание термина «си с классами». С++ сочетает в себе три большие части, плохо сочетающиеся: 1) си с классами, 2) исключения, 3) фп на шаблонах.
ну тогда С++ - это и есть по большей части "Си с классами", плюс шаблоны сбоку
Из хренадцати потоков постучал в один объект там подёргал, там выбросил, чёто отвалилось, кто владеет непонятно, там вылетел эксепшн, а сям десяток багов и кривого кода. Где гарантия что не смотря на нехватку времени и кривые руки память не просрется?
так не в этом как раз плюс RAII что ресурсы не просрутся если что нибудь сломается?
да, я понял примерно. И что, это никак нельзя обойти?
обойти глобально - написать reset() в ~unique_ptr, как это сделано в clang реализации я обходил прописывая явно ptr.reset() в деструкторе владевшего ptr
Странно видеть непонимание термина «си с классами». С++ сочетает в себе три большие части, плохо сочетающиеся: 1) си с классами, 2) исключения, 3) фп на шаблонах.