Расширить до кучи и выделения стека unique_ptr , я немного смущен поведением возврата unique_ptr из выделенного объекта стека ниже:
unique_ptr<int> StackAllocatedIntToUniquePtr() {
int i = 4;
return unique_ptr<int>(&i);
}
int main() {
std::unique_ptr<int> u_ptr4 = StackAllocatedIntToUniquePtr();
std::cout << *u_ptr4 << std::endl;
}
Онлайн-сборка и запуск дают предупреждение во время выполнения и выведите 0 для *u_ptr4
:
warning: 'i' may be used uninitialized in this function [-Wmaybe-uninitialized]
| std::cout << *u_ptr4 << std::endl;
|
0
Почему такое поведение?