Писать кастомный?
а на какой системе ты собираешься исполняться?
если речь про софт для классического окружения,то тупо всегда быть готовым к приходу оом киллера и быть аккуратнее с неатомарными операциями над пользовательскими данными
Ни на какой пока в теории, я хочу что-то типа std::bad_alloc из плюсов
проблема в том, что на Unix-системах аллокация ~никогда не фейлится просто потом в рандомный момент исполнения приходит OOM killer и тебя убивает
да чего ты к никсам то пристал. не ими едиными
Ну то есть часто можно тупо не париться, ибо ос сама все приберет?
зависит исключительно от вашего случая. Фейл аллокации далеко не всегда означает, что и вам следует громко падать
в большинстве случаев да. всё равно сделать в ситуации OOM что-то полезное может быть нетривиально. зависит от конкретного юзкейса, окружения, в котором исполняется программа и кода, который ты собираешься выполнять в случае ООМ.
Ну я-то как раз хочу не громко падать. Вот допустим я на windows, где такого счастья, как oom killer нету...
на Windows нет оверкоммита, т. е. аллокация действительно может зафейлиться. чтобы это руками обрабатывать, нужна найтли-фича allocator_api, которая включает функции вроде Box::try_new()
если именно стандартное интересует, то подписывайся на https://github.com/rust-lang/rust/issues/32838
Супер, надеюсь когда-нибудь стабилизируют. Zig вот например что-то подобное из коробки умеет делать, но там немного другая история))
Обсуждают сегодня