Егор @Tujh
C & C++ Developer
Information
- Rating
- 4,264-th
- Location
- Eindhoven, Noord-Brabant, Нидерланды
- Date of birth
- Registered
- Activity
Specialization
Embedded Software Engineer, Scrum Master
Lead
C++
C
Embedded system
Embedded Linux
Cmake
Bash
Docker
CI/CD
Git
Python
То чувство, когда ожидаешь увидеть практическое применение __attrubute(( __cleanup ... и прочего, а по факту просто пишут - а давайте напишем функцию, что бы удалять поля структуры...
В статье ни чего не сказанно про фаззинг, но зато расписан манглинг, о котором ни слова ни в заголовке, ни в тексте.
Ошибка пошла с этой фразы
А кто сказал, что поиск точно такого же решения на С++ является хорошей идеей? Основная же задача была "сделать Clone без дублирования внутренних данных", а не атомарный или нет подсчёт ссылок.
По сути человек хотел атомарный std::move (если я правильно понял), но ушел в какие-то дебри.
Если вдруг ссылка окажется битой снова - искать по заголовку "Его звали Пауль (заметки переводчика)"
https://earlyhawk.livejournal.com/2859364.html
нет, потому что, как минимум, можно положить переменную в кольцевой буфер, который аллоцирован ещё на этапе запуска программы и попытаться установить соединение позже, а не просто терять коннект до клиента. А отбросить подключение с ошибкой, скажем 408 или 504, можно после нескольких итераций, когда уже точно понятно, что или ресурсов нет и не будет, или запрос уже потерял актуальность.
Простой пример - TCP сокет как результат вызова функции accept(). Повторный вызов вернёт другой сокет (и неизвестно через какое время), а соединение с клиентом будет потеряно.
Люблю таких категоричных :)
И ведь не ёкнуло от противоречая в своих же словах: всегда можно создать повторно, но если нельзя...
Отвечу отдельно.
В С и С++ существует множество исключений, которые программа вообще не сможет поймать средствами языка. Для примера - SEH исключения. Поймать SEH исключение возможно только специальными расширениями от Microsoft, соответственно это будет работать только для компилятора из MSVC и не переносимо не то, что на другую платформу, но даже на, к примеру, clang или MinGW.
Так что, в общем случае - finally блока в С++ нет вообще.
Тогда почитайте, пожалуйста, так как это самый огромный недостаток исключений конкретно в С++. Поймать исключение можно несколькими вызовами выще по стеку, когда обьекты, бросившие исключение уже уничтожены, а значит, восстановление работоспособности программы не гарантируется или невозможно.
Наверное интересно увидеть на дисплее автомобиля, мчащегося под 300 км/ч по немецкому автобану - прошивка ЭБУ выполнила недопустимую операцию и контроллер будет выключен? :)
А разве при написании программ бывает иначе?
В некоторых ситуациях объект исключения тоже выделяет память в момент вызова, поэтому бросить std::bad_alloc не получится - приложение перейдёт в бесконечный цикл аллокации исключения и упадёт с stack overflow.
Почитайте об embedded разработке, в частности - bare-metal, полезно будет, там нет операционной системы, там нет глобального пула памяти, там невозможны исключения в принципе.
Это не крутость или простота - это одна из областей где С и С++ находят большое применение сейчас.
Nope
Специально нашёл какой-то древний сайт на народе (оказывается он ещё жив) про Turbo Pascal, а это древность времён MS-DOS.
http://www.borlpasc.narod.ru/docym/br/8/8_15.htm
И чем это принципиально отличается от провери врезультата malloc() по месту вызова?
Более того, исключение полностью ломает стек вызова, а значит логику восстановления (roll out) очень сложно реализовать - поэтому во многих сферах исключения запрещены к использованию.
Ну и можно же попросить new не бросать исключения, тогда результат нужно будет проверять точно так же как и в случае с malloc() и это, между прочим, стандартная практика в embedded и подобных системах.
Про Бейсик и Фортран не помню, а пот про Pascal слышать забавно:
getmem - Allocate new memory on the heap (аналог malloc)
new - Dynamically allocate memory for variable
Ну вот же, сперва отрицание, а потом правильный ответ :)
А кто-то про обобщённый говорил?
С этим-то как раз все согласны, в цитате сказано, что можно испортить память другим приложениям и самой ОС. Потенциально - да, действительно можно, через уязвимости самой ОС, но это уже целенаправленное действие, а не случайность из-за обращения по невалидному адресу.
Не верно со времён i386 и ОС на нём.
Читать про защищённый режим работы CPU, страничную организацию памяти и защиту памяти.
В частности
и далее по ссылкам.
Какой shared в Си без плюсов?
В С++ практически не используется malloc() подобные функции. Статья явно написана для чисто си, без плюсов.
Дальше уже можно не читать, так как становится ясно, что за автора статью писал AI.
У codingame есть один существенный недостаток как раз в соревновательном режиме, кроме того, что там код расшаривается по желанию. Можно написать сколько угодно интересное решение, но победит олимпиадник, который засунет всё решение в одну нечитаемую строку на питоне.
А вот пазлы у них - одни из лучших для обучения.
ОК. Признаю, пропустил.
Что тогда понимается под "кремниевыми долинами"? В NL действительно не очень любят венчурные инвестиции, но в остальном не вижу принципиальной разницы, да и пресса не видит.
https://ufuture.com/en/the-light-of-innovation-how-eindhoven-becomes-a-dutch-silicon-valley-thanks-to-brainport/
https://bits-chips.nl/artikel/stop-saying-were-the-silicon-valley-of-europe/
https://vneconomy.vn/pm-visits-silicon-valley-of-europe.htm
https://brabantisbright.nl/creating-value-together/testimonials-showcases/advantech-this-is-the-silicon-valley-of-europe/
ну и далее в гугл или яндекс
Мда, как же деградировал уровень статей с появлением ChatGPT.
Во-первых, Эйндховен (и соседний Велдховен, где и расположен ASML) называют именно Кремниевой долиной Европы. Во-вторых, про технологичесткое развитие; изобретения компании Philips, сделанные в разные годы именно в Эйндховеновском подразделении:
Первый в мире boombox
Первый в мире домашний видеомагнитофон
CD диск (совместно с Sony)
Из бывших подразделений Philips, выделенных в отдельные предприятия, выросли обсуждаемая в статье ASML, NXP (оригинальное название Philips Semiconductors), Signify (до этого Philips Lighting) и ещё много других.
То же TSMC, упомянутое в статье.
И вот ни разу не сказано, что именно Philips выступило основным инвестором TSMC на начальном этапе
Глупый, бывает
Да, имею
Последний раз, если всё так радужно, почему продолжительность жизни в России существенно ниже чем в ЕС? Почему деньги на лечение собирают смс-ками?
Вам из России, конечно виднее, чем мне, как устроена медицина в NL :)
25% населения - чисто сельское, на них, конечно же, можно забить.
P.S. Я рад, что у вас всё очень хорошо и вы живёте в самой прекрасной стране в мире, в которой лучшая и самая современная медицина.
Я же просто оставлю тут несколько ссылок, на новости не старше недели, если они не откроются - вопросы к самому лучшему в мире РосКомНадзору
«Нет ни в одной аптеке». По всей России из продажи исчезает инсулин
В России возникла нехватка лекарства для лечения рака молочной железы
Из аптек снова начали пропадать лекарства. На этот раз жители ХМАО пожаловались на дефицит детских антибиотиков и препаратов для ревматизма.
В России возник дефицит уникального препарата от повторного инфаркта
Лекарств нет, но вы держитесь: тяжелобольные дети в России остались без медикаментов
Про Москву и "одну точку, один центр и т.д." как раз по последней ссылке
У меня нет радужных очков относительно ЕС, но вот медицина и социальная среда тут не сравнимы с Россией. И да, Москва - это не Россия, это метрополия по отношению к территориям за МКАДом, со всеми вытекающими.
Они оба часть одной команды и если вы действительно думаете, что тестировщики "должны всячески мешать" разработчикам то у меня для вас плохие новости.