Стабилизировано выделение памяти с нулевым заполнением — без отдельного вызова обнуления

21.09.2025

Стабилизированы две функции выделения памяти с нулевым заполнением. Они запрашивают у аллокатора память и сразу обнуляют её, тогда как раньше обнуление требовалось отдельным вызовом поверх выделения.

Почему это не «просто оптимизация»

Выделить и обнулить — две операции, и между ними есть промежуток, в который память не инициализирована. Если в этот момент что-то к ней обратится, поведение не определено. На практике это окно невелико, но при многопоточности это ровно тот класс дефектов, который ищут годами.

Операция, объединяющая выделение и обнуление, убирает окно целиком. Никаких «должно работать, но осторожно» не остаётся.

Чем отличается от обнуления самостоятельным вызовом

Второй вариант не исчезает совсем: иногда обнуление уже выполнено, и повторное не нужно. Но там, где гарантия важна, новая операция предпочтительнее.

Обратная операция — повторное выделение с сохранением обнуления — тоже стабилизирована.

Оригинал

Stabilize new_zeroed_alloc

Упоминаний: 1 · Просмотров: 1