shared_ptr<std::string> shared_ptr1 = std::make_shared<std::string>("Foo");
shared_ptr<std::string> shared_ptr2 = std::make_shared<std::string>("Bar");
std::string* normal_ptr = shared_ptr1.get();
shared_ptr1 = shared_ptr2;
现在,在“shared_ptr1 = shared_ptr2”赋值之后,第一个字符串“Foo”会被垃圾回收吗?根据this , "Foo"没有被垃圾回收。但我只想确保我遇到的不是未定义的行为。
谢谢!
最佳答案
Now, will the first string "Foo" be garbage collected after the "shared_ptr1 = shared_ptr2" assignment?*
如果你的意思是 std::make_shared<std::string>("Foo")
分配的字符串被摧毁,那么是的。
这意味着normal_ptr
, 在你做了 shared_ptr1 = shared_ptr2;
之后指向一个不再存在的对象。
关于c++ - 调用 get 后将 shared_ptr 分配给另一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56243375/