И как теперь ошибки аллокации ловить?
насколько знаю, или таки использовать ночник с try_new/кастомным аллокатором, или быть готовым к прибиванию всего процесса и перезапускать его чем-то внешним
Ещё смотрю в доке не написано про то, что может паниковать Box::new (да и вообще не одного употребления panic в доке к Box не вижу). Так же нельзя делать. Надо писать об этом
а где там паники?
Windows?
Я не очень шарю в плашках, но не вижу плашку, что не стабилировано только на винде
linux kernel же
смысл ловить ошибки аллокации может быть либо если у тебя Windows, либо если ты руками отключил оверкоммит на Linux (на Darwin оверкоммит не отключается).
там свой форк std ЕМНИП.
(либо во встройке,но это вообще другой разговор в целом)
в противном случае Box::new(_) у тебя никогда не упадёт, упадёт позже использование памяти в случайном месте кода. независимо от языка
когда я в последний раз смотрел, там у тебя один фиг найтли будет
Хм. Сейчас попробовал аллоцировать [0usize, 1024 * 1024], так переполнение стека происходит почему-то... Копирует он что-ли так
это другая проблема когда ты пишешь Box::new([0; 1024 * 1024]), ты сначала кладёшь этот гигантский массив на стек, а только потом перемещаешь на кучу
потому что аргументы в функцию передаются на стеке*
Обсуждают сегодня