为什么
struct X{};
X x;
X *q = &x;
std::shared_ptr<X> p(&x);
Run Code Online (Sandbox Code Playgroud)
导致错误和
X x;
X *q = &x;
std::shared_ptr<X> p0 = std::make_shared<X>(x);
Run Code Online (Sandbox Code Playgroud)
不会导致运行时错误?
我读到在第一种情况下,我有“两个不同的指针,指向相同的数据,并且其中一个被共享”,
但是我认为在第二种情况下存在相同的情况?
free(): invalid pointer
Run Code Online (Sandbox Code Playgroud)