I stumbled upon this behaviour when using std::weak_ptr
and std::make_shared
and I found it a little weird. I am using C++11.
#include <iostream>
#include <memory>
int main()
{
std::weak_ptr<int> weak;
std::shared_ptr<int> shared {std::make_shared<int>(42)};
weak = shared;
std::cout << "Meaning of life: " << *weak.lock() << std::endl;
weak = std::make_shared<int>(23);
std::cout << "Meaning of life: " << *weak.lock() << std::endl;
return 0;
}
The first std::cout
prints fine, the second gives me a segfault. I tried looking at the pages of std::weak_ptr
and std::shared_ptr
on cppreference but I still don't understand why this happens. Having to create a temporary object feels cumbersome to me, is this something that has been addressed in C++14 or is there something I am failing to see?
Thanks!
Aucun commentaire:
Enregistrer un commentaire