get_some_struct() -> &'static SomeStruct {
let mut some = SOME.load(Ordering::Acquire);
if some.is_null() {
some = &mut SomeStruct::new().unwrap();
SOME.store(some, Ordering::Release);
}
unsafe { &(*some) }
}
При первом вызову функции get_some_struct()- всё хорошо, возвращается нужная мне структура. Если вызвать эту же функцию ещё раз - получаю какой-то мусор. Что я делаю не так?
Ну так ты поинтер на стек возвращаешь
И, если что, этот код не гарантирует единственность вызова SomeStruct::new()
Обсуждают сегодня