понимание возврата unique_ptr из выделенного объекта стека - PullRequest
0 голосов
/ 17 июня 2020

Расширить до кучи и выделения стека 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  

Почему такое поведение?

...