сишечка — норм подходит, там сайдэффектов у выхода из скоупа нет. не нужно волноваться о том, что какой-нибудь деструктор попытается ещё чего-нибудь зааллоцировать
ой, да ладно. ты модули под nginx писал когда-нибудь? там по всему стеку вызовов доступен пул для текущего треда и в нём можно регистрировать cleanup-функции. так что вообще ни о чём не запариваешься, чуть что не так — сразу возвращаешь код ошибки и всё. а функция на самом верхнем уровне уже вызовет все нужные функции очистки ресурсов
Есть ли жизнь после бэдаллока?
в грамотно написанном приложении — конечно есть. но на плюсах я таких приложений за десять лет ни разу не видел
Вот и мне не попадалось.
наверное это потому что плюсы — говно
Исключительно поэтому, сударь. На полном серьезе. Языки без VM мало подходят для регенерации работы после окончания памяти.
сишечка — норм подходит, там сайдэффектов у выхода из скоупа нет. не нужно волноваться о том, что какой-нибудь деструктор попытается ещё чего-нибудь зааллоцировать
Все равно без костылей не обойдется, особенно если ты попытаешься сообщить о фейле наружу.
костыль всегда сводится к освобождению уже захваченных ресурсов и возврату инта с кодом ошибки. с этим можно жить
Но это не жизнь, а достойная смерть.
ой, да ладно. ты модули под nginx писал когда-нибудь? там по всему стеку вызовов доступен пул для текущего треда и в нём можно регистрировать cleanup-функции. так что вообще ни о чём не запариваешься, чуть что не так — сразу возвращаешь код ошибки и всё. а функция на самом верхнем уровне уже вызовет все нужные функции очистки ресурсов
Не писал. Конкретно в случае nginx все так гладко благодаря тому, что он не просто веб-прокси, а целый фреймверк, не?
ну так ничего не мешает в стандартную библиотеку сишечки такой фреймворк запилить
Учитывая, что Си предназначем в том числе для всяких MCU, подобные вещи в стандартной библиотеке обречены иметь проблемы в реализации.