panic, в методах: для Vec<> .push(), для String .push_str(), и в HashMap .insert, это делать перед ними try_reserve/try_reserve_exact и смотреть на результат его выполнения ? Цель: обработать ошибки самому (записать сообщение в лог итп итд ..), и не допустить panic ? Если ли еще какие либо best practices для обработки ошибок нехватки памяти, без использования panic ?
я почему-то думал, что при пуше проверяется наличие необходимого свободного места и при необходимости выделяется больше, с перекладыванием контейнера в новую область. Может запаниковать?
а если при выделении нет свободной памяти что будет тогда ?
В зависимости от железа и системы этот вариант может быть более или менее фантастическим, если я правильно понимаю
В линуксе, зависит от /proc/sys/vm/overcommit_memory 0 - если система посчитает, что запрошенный размер слишком большой, то память не выделит, иначе создаст страницы памяти не замапленые на физическую память и при обращении к ним может случиться SEGFAULT (но скорее придёт OOM киллер и убьёт процесс) 1 - всегда использовать второй вариант из 0 2 - никогда не использовать второй вариант из 0
Обсуждают сегодня