Size: a a a

2020 September 26

CD

Constantine Drozdov in pro.cxx
Alex
А как так получилось?
unique_ptr не нулит указатель перед выполнением get_deleter()(get()) как это делает reset(), так что если эффектом get_deleter()(get()) будет reset() над тем же unique_ptr, получится double free
источник

ГH

Гласси Hudobin in pro.cxx
Странно видеть непонимание термина «си с классами». С++ сочетает в себе три большие части, плохо сочетающиеся: 1) си с классами, 2) исключения, 3) фп на шаблонах.
источник

A

Alex in pro.cxx
Интересно. Я даже не знаю, что за get_deleter, никогда не нужно было в такие дебри влазить
источник

AD

Apache DOG™ in pro.cxx
Alex
с "везде" надо аккуратно, иначе будут утечки через взаимные ссылки)
Вот а вы говорите про фигню не писать,
источник

AD

Apache DOG™ in pro.cxx
Это не фигня, а ошибиться есть где
источник

A

Alex in pro.cxx
Гласси Hudobin
Странно видеть непонимание термина «си с классами». С++ сочетает в себе три большие части, плохо сочетающиеся: 1) си с классами, 2) исключения, 3) фп на шаблонах.
ну тогда С++ - это и есть по большей части "Си с классами", плюс шаблоны сбоку
источник

A

Alex in pro.cxx
Apache DOG™
Это не фигня, а ошибиться есть где
Есть, не спорю, но НЕ ошибаться достаточно легко
источник

P

Pepe 🐸 in pro.cxx
Apache DOG™
Из хренадцати потоков постучал в один объект там подёргал, там выбросил, чёто отвалилось, кто владеет непонятно, там вылетел эксепшн, а сям десяток багов и кривого кода. Где гарантия что не смотря на нехватку времени и кривые руки память не просрется?
так не в этом как раз плюс RAII что ресурсы не просрутся если что нибудь сломается?
источник

A

Alex in pro.cxx
кроме того, утечка - совсем не той же серьёзности проблема, что битая память
источник

CD

Constantine Drozdov in pro.cxx
Alex
Интересно. Я даже не знаю, что за get_deleter, никогда не нужно было в такие дебри влазить
Ну там итоговый прикол, что внутри unique_ptr ptr лежит шняга в духе defer([&] () { ptr.reset(); });
источник

AD

Apache DOG™ in pro.cxx
Alex
Есть, не спорю, но НЕ ошибаться достаточно легко
Это так не работает. Либо есть возможность подскользнулся, либо её нет
источник

A

Alex in pro.cxx
да, я понял примерно. И что, это никак нельзя обойти?
источник

A

Alex in pro.cxx
Apache DOG™
Это так не работает. Либо есть возможность подскользнулся, либо её нет
нет, между белым и чёрным есть оттенки)
источник

AD

Apache DOG™ in pro.cxx
Alex
нет, между белым и чёрным есть оттенки)
Не всюду
источник

CD

Constantine Drozdov in pro.cxx
Alex
да, я понял примерно. И что, это никак нельзя обойти?
обойти глобально - написать reset() в ~unique_ptr, как это сделано в clang реализации
я обходил прописывая явно ptr.reset() в деструкторе владевшего ptr
источник

AD

Apache DOG™ in pro.cxx
Pepe 🐸
так не в этом как раз плюс RAII что ресурсы не просрутся если что нибудь сломается?
Если его правильно реализовать и использовать, т.е. на тонне дисциплины.
источник

CD

Constantine Drozdov in pro.cxx
Apache DOG™
Это так не работает. Либо есть возможность подскользнулся, либо её нет
Либо есть возможность поскользнуться, либо нет возможности написать любую программу. Выбор за тобой
источник

AD

Apache DOG™ in pro.cxx
Гласси Hudobin
Странно видеть непонимание термина «си с классами». С++ сочетает в себе три большие части, плохо сочетающиеся: 1) си с классами, 2) исключения, 3) фп на шаблонах.
Где, простите, там ФП.
источник

AD

Apache DOG™ in pro.cxx
Constantine Drozdov
Либо есть возможность поскользнуться, либо нет возможности написать любую программу. Выбор за тобой
Любая программа не нужна, нужна сейвовая
источник

CD

Constantine Drozdov in pro.cxx
Apache DOG™
Любая программа не нужна, нужна сейвовая
А если сейвово это не реализуется?
источник