std::weak_ptr
とstd::make_shared
を使用したときにこの現象が発生し、ちょっと変わったと感じました。私はC++ 11を使用しています。std :: make_sharedでのstd :: weak_ptrの割り当て
#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;
}
最初std::cout
プリント罰金、二つ目は私にセグメンテーションフォルトを提供します。私はstd::weak_ptr
とstd::shared_ptr
のページをcppreferenceに見てみましたが、なぜこれが起こるのかまだ分かりません。一時的なオブジェクトを作成しなければならないのは面倒です。これはC++ 14で解決されたものなのでしょうか、私が見ていないものがありますか?
ありがとうございます!