170 похожих чатов

Слышал, что в c++ можно выстрелить себе в ногу не

заметив. Это как ? Есть какие-то примеры?

16 ответов

19 просмотров

Можно за собой память не почистить и словить утечку

Web- Автор вопроса
Zurich
Можно за собой память не почистить и словить утечк...

а в го можно гонку, неожиданный дедлок

Там очень много способов. Например, не объявить деструктор класса, имеющего виртуальные методы, виртуальным. Или забыть инициализировать какую-то переменную. Накосячить с шаблонами. И т.д. и т.п.

Zurich
Можно за собой память не почистить и словить утечк...

Неинциализированные переменные также существуют, что тоже неприятно Два раза можно почистить память В общем, много вариантов UB

Ну, из тех, что реально тяжело заметить, мне встречались только проблемы со временем создания объекта - в этом случае надо всю программу перекраивать. Грубо говоря, это когда кусок программы ожидает, что какой-то объект существует в тот момент, когда этот кусок вызывается, а этот объект ещё не может быть создан по каким-то причинам. Как следствие, может быть ситуация похожая на дедлок, но хуже: когда первый кусок кода требует объект, а второй может предоставить этот объект только после того, как отработает первый кусок. Вот такой ад ничем не отловить в плюсах. Только во время работы программы увидишь, что сегфолт приехал, и засядешь на пару дней разгребать временны́е зависимости.

Web
а в го можно гонку, неожиданный дедлок

Можно. Но многопоточное программирование везде не так просто даётся. На плюсах и в однопоточном коде намного проще допустить ошибку

Igorь
Ну, из тех, что реально тяжело заметить, мне встре...

лечится принципом "нормально делай - нормально будет")

Alexey Gevondyan
лечится принципом "нормально делай - нормально буд...

Такое в любом сколь-нибудь большом проприетарном проекте время от времени встречается. Как бы нормально люди не писали

Web
а в го можно гонку, неожиданный дедлок

в Go хотя бы есть удобный тулинг и рантайм, собственно, при дедлоках паникует

Igorь
Ну, из тех, что реально тяжело заметить, мне встре...

Справедливости ради, описанное - это ошибка логики. Порядок выполнения разных кусков кода не определен корректно. Подобное вызовет проблемы на любом языке

Igorь
Такое в любом сколь-нибудь большом проприетарном п...

да, любой большой проприетарный проект - наоверинжениренная дичь как правило. фотошоп, 3д макс, и вот это вот все.

Web
а в го можно гонку, неожиданный дедлок

кроме того, в C++ и языках, которые делят с ним модель памяти data race — UB в Go — нет

Mikhail Efimov
Справедливости ради, описанное - это ошибка логики...

Но в голанге это сделать значительно труднее благодаря модулям

don't care
В rust такая дичь есть?

в safe Rust нет, в unsafe запросто

c
в safe Rust нет, в unsafe запросто

А оно там жестко разделено?

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта