Стабилизировано выделение памяти с нулевым заполнением — без отдельного вызова обнуления
21.09.2025Стабилизированы две функции выделения памяти с нулевым заполнением. Они запрашивают у аллокатора память и сразу обнуляют её, тогда как раньше обнуление требовалось отдельным вызовом поверх выделения.
Почему это не «просто оптимизация»
Выделить и обнулить — две операции, и между ними есть промежуток, в который память не инициализирована. Если в этот момент что-то к ней обратится, поведение не определено. На практике это окно невелико, но при многопоточности это ровно тот класс дефектов, который ищут годами.
Операция, объединяющая выделение и обнуление, убирает окно целиком. Никаких «должно работать, но осторожно» не остаётся.
Чем отличается от обнуления самостоятельным вызовом
Второй вариант не исчезает совсем: иногда обнуление уже выполнено, и повторное не нужно. Но там, где гарантия важна, новая операция предпочтительнее.
Обратная операция — повторное выделение с сохранением обнуления — тоже стабилизирована.
Оригинал
Stabilize new_zeroed_alloc
Упоминаний: 1 · Просмотров: 1