Стандартная библиотека определяет пару функций для работы с инициализацией. Они являются общими, поэтому их можно использовать для инициализации значений любого типа.
Во-первых, есть std::mem::uninitialized()
, что дает вам неинициализированное значение. LLVM будет считать содержимое неопределенным и будет выполнять агрессивные оптимизации на основе этого. Вы должны инициализировать любое значение перед его чтением.
Во-вторых, есть std::mem::zeroed()
, который дает вам значение, чье хранилище заполнено нулями. Эта функция unsafe
, потому что такое значение не обязательно является законным для всех типов. zeroed()
подходит для типов «простых старых данных» (POD).