Size: a a a

2020 March 13

PK

Pavel Kazakov in pro.cxx
для UB ничего оптимизировать не надо: обработка такого поведения не определена -- эта формулировка понятна? или каким-то образом на ноль все-таки надо делить, но компилятор-зараза мешает?
источник

ПК

Побитый Кирпич in pro.cxx
Vyacheslav Olkhovchenkov
пока не начали массово втаскивать абы что в UB и потом говорить что для UB оптимизируем как хотим -- все было норм.
Собирай всегда на -O0, если хочешь чтоб гавнокод работал, делов то
источник

PZ

Pavel Zhigulin in pro.cxx
magras
А какие альтернативы?
Все обращения к указателям проверять на ноль?
Отлично, а что делать с обращением к адресу равному 1?
Значительную часть UB просто невозможно диагностировать.
Такое чувство, что все старательно пытаются начать растосрач)
источник

PK

Pavel Kazakov in pro.cxx
magras
А какие альтернативы?
Все обращения к указателям проверять на ноль?
Отлично, а что делать с обращением к адресу равному 1?
Значительную часть UB просто невозможно диагностировать.
адрес nullptr не ноль -- он не определен)
источник

VO

Vyacheslav Olkhovchenkov in pro.cxx
magras
А какие альтернативы?
Все обращения к указателям проверять на ноль?
Отлично, а что делать с обращением к адресу равному 1?
Значительную часть UB просто невозможно диагностировать.
не считать что раз у нас в указатель записали 0 то можно вместо кода сгенерировать свою фантазию. это ведь слишком просто, да?
источник

ПК

Побитый Кирпич in pro.cxx
Vyacheslav Olkhovchenkov
не считать что раз у нас в указатель записали 0 то можно вместо кода сгенерировать свою фантазию. это ведь слишком просто, да?
Вместо какого кода?
источник

ПК

Побитый Кирпич in pro.cxx
Там всегда всё по делу
источник

DS

Dmitriy Salko in pro.cxx
magras
А какие альтернативы?
Все обращения к указателям проверять на ноль?
Отлично, а что делать с обращением к адресу равному 1?
Значительную часть UB просто невозможно диагностировать.
Ну хз у кого как, но в emb таки да, указатель нужно всегда проверять на nullptr
источник

PK

Pavel Kazakov in pro.cxx
Vyacheslav Olkhovchenkov
не считать что раз у нас в указатель записали 0 то можно вместо кода сгенерировать свою фантазию. это ведь слишком просто, да?
указатель может указывать на нулевую страницу, особенно в эмбедовке; nullptr -- sentinel value для указателей, зачем такое значение руками присваивать указателю, а потом его использовать? головой тоже думать надо
источник

AB

Artöm Bakri Al-Sarmini in pro.cxx
Vyacheslav Olkhovchenkov
не считать что раз у нас в указатель записали 0 то можно вместо кода сгенерировать свою фантазию. это ведь слишком просто, да?
Все фантазии так или иначе опираются на гарантии
источник

VO

Vyacheslav Olkhovchenkov in pro.cxx
Побитый Кирпич
Вместо какого кода?
источник

PK

Pavel Kazakov in pro.cxx
вот она, та статья, про пример из которой сразу все подумали, когда разговор сюда зашел))
источник

PZ

Pavel Zhigulin in pro.cxx
magras
А какие альтернативы?
Все обращения к указателям проверять на ноль?
Отлично, а что делать с обращением к адресу равному 1?
Значительную часть UB просто невозможно диагностировать.
1) Запретить прямое управление указателями

2) Дать статические гарантии, что указатель не null (использовать ссылки)

3) Все места, где всё-таки нужно что-то нахачить обложить ужасным синтаксисом, чтобы хачить хотелось поменьше)
источник

ПК

Побитый Кирпич in pro.cxx
Pavel Zhigulin
1) Запретить прямое управление указателями

2) Дать статические гарантии, что указатель не null (использовать ссылки)

3) Все места, где всё-таки нужно что-то нахачить обложить ужасным синтаксисом, чтобы хачить хотелось поменьше)
Собстно это Modern C++ и есть
источник

PK

Pavel Kazakov in pro.cxx
ты сам-то подумай: будь ты на месте авторов компилятора, как бы ты мог оптимизировать что-либо? у тебя только и есть, что гарантии из стандарта
источник

ПК

Побитый Кирпич in pro.cxx
А какого эффекта ты бы хотел от этого кода?
источник

m

magras in pro.cxx
Pavel Zhigulin
1) Запретить прямое управление указателями

2) Дать статические гарантии, что указатель не null (использовать ссылки)

3) Все места, где всё-таки нужно что-то нахачить обложить ужасным синтаксисом, чтобы хачить хотелось поменьше)
Ну вы же изобрели раст. Я люблю раст, но у него есть свои недостатки.
источник

v

vehlwn in pro.cxx
Dmitriy Salko
Ну хз у кого как, но в emb таки да, указатель нужно всегда проверять на nullptr
Если проверка if(!p); в общем случае невалидна и надо везде писать if(p != nullptr);, то почему 0 это единственный интеграл, который может неявно конвертироваться в указатель?
источник

AB

Artöm Bakri Al-Sarmini in pro.cxx
vehlwn
Если проверка if(!p); в общем случае невалидна и надо везде писать if(p != nullptr);, то почему 0 это единственный интеграл, который может неявно конвертироваться в указатель?
Она валидна
источник

AB

Artöm Bakri Al-Sarmini in pro.cxx
0 потому что так решили
источник