Size: a a a

2020 June 16

A

Alex in pro.cxx
Alex Ф-ф-фэils!🌠︙
А, вот как эта хрень, что я делаю, называется😂
ага, я тоже поржал)
источник

A

Alex in pro.cxx
было бы что там называть особым термином
источник

G

Gabriel in pro.cxx
Парни такой вопрос.

Есть state машина, внутри одного state дёргается changeState дважды. А внутри changeState есть move текущего стэйта в другой объект для сохранения. Функция при этом ещё выплняется на текущем объекте. Сам объект не становится null ptr-ом после move, только указатели внутри него обнуляются. С чем может быть связано?
источник

CD

Constantine Drozdov in pro.cxx
Dmitry Sokolov
А чем это отличается от raw ptr? И вообще какой смысл несёт reset в деструкторе?
Короче, оставлять объект в unspecified state перед виртуальным вызовом - категорически плохая идея
источник

A

Alex Ф-ф-фэils!🌠︙... in pro.cxx
Alexander Malkov
кста, давно вопрос висит, почему большинство юзает nlohmann/json - вместо, например rapid json?
Он даёт удобный няшный  STL-like-интерфейс
источник

A

Alex in pro.cxx
Alexander Malkov
кста, давно вопрос висит, почему большинство юзает nlohmann/json - вместо, например rapid json?
я перешёл на rapidjson, когда понял, что дикие тормоза - фича конкретно nlohman. Но интерфейс там получше, не поспоришь.
источник

A

Alex Ф-ф-фэils!🌠︙... in pro.cxx
Побитый Кирпич
Так что ждём апи для аудио, 2d графики, баз данных и прочего
Ну для db по факту надо только api для odbc сделать в плюсовом стиле, мб типа odbcpp или чего-то помодернее
источник

DS

Dmitry Sokolov in pro.cxx
Constantine Drozdov
Короче, оставлять объект в unspecified state перед виртуальным вызовом - категорически плохая идея
А, типа обнулиться и потом уж дергать удалятель... Ну обращаться с объектом класса который находится в процессе выполнения деструктора это тоже плохая идея, не только для unique_ptr. Ну и с рекурсивной зависимостью вот недавно подобный пример с leak в векторе упоминали.
источник

CD

Constantine Drozdov in pro.cxx
Dmitry Sokolov
А, типа обнулиться и потом уж дергать удалятель... Ну обращаться с объектом класса который находится в процессе выполнения деструктора это тоже плохая идея, не только для unique_ptr. Ну и с рекурсивной зависимостью вот недавно подобный пример с leak в векторе упоминали.
А утверждать, что ты - владелец ресурса в процессе его удаления хорошая идея?
источник

CD

Constantine Drozdov in pro.cxx
Напоминает легендарный баг беты висты
if (::IsWindow(hWnd)) ::DestroyWindow(hWnd); //CRASH
источник

CD

Constantine Drozdov in pro.cxx
Давай и из reset() уберем эту логику, чего уж там :)
источник

A

Alex in pro.cxx
почему крэш? В чём баг?
источник

CD

Constantine Drozdov in pro.cxx
Alex
почему крэш? В чём баг?
DestroyWindow в стеке, не пошло
источник

DS

Dmitry Sokolov in pro.cxx
Constantine Drozdov
А утверждать, что ты - владелец ресурса в процессе его удаления хорошая идея?
Конечно, я ж UNIQUE, а все кто хранят на меня ссылки сами дураки. Мне кажется проблема с рекурсией надуманная, а вот делать лишний store в деструкторе это таки то за что мы обычно не платим :)
источник

CD

Constantine Drozdov in pro.cxx
Dmitry Sokolov
Конечно, я ж UNIQUE, а все кто хранят на меня ссылки сами дураки. Мне кажется проблема с рекурсией надуманная, а вот делать лишний store в деструкторе это таки то за что мы обычно не платим :)
Хм... лишний STORE вместо LOAD перед кэшмиссом? :)))
источник

CD

Constantine Drozdov in pro.cxx
Dmitry Sokolov
Конечно, я ж UNIQUE, а все кто хранят на меня ссылки сами дураки. Мне кажется проблема с рекурсией надуманная, а вот делать лишний store в деструкторе это таки то за что мы обычно не платим :)
И да, если что, я эту проблему не придумал, а нашел и был в полном ужасе от того, что я не могу её никаким образом провалидировать. Я не могу в деструкторы (в качестве defer!) писать вызовы shell функций винды
источник

DS

Dmitry Sokolov in pro.cxx
Constantine Drozdov
Хм... лишний STORE вместо LOAD перед кэшмиссом? :)))
Ну согласись это misuse по ссылке то, точно так же можно сказать там ptr = make_unique
источник

CD

Constantine Drozdov in pro.cxx
Там создать в конструкторе временную папочку, удалить в деструкторе - катастрофа
источник

CD

Constantine Drozdov in pro.cxx
В оригинальном примере, собственно, у меня клалось во внутреннюю очередь сообщение с фабрики, фабрика хранила guard чтобы это сообщение прибить, а чтобы понимать собственное состояние обнуляла в деструкторе сообщения этот guard
источник

CD

Constantine Drozdov in pro.cxx
ну и ~factory() { guard = nullptr; } разумеется, иначе heap corruption
источник