【发布时间】:2020-12-30 10:39:50
【问题描述】:
所以我试图加深对 shared_ptr 的理解,如果多个共享 ptr 指向同一个资源共享指针,是否可以处理在指向资源的最后一个指针被销毁之前不应该调用 destrcutor 的情况。
这是我的示例代码:
#include <iostream>
#include <memory>
class A {
public:
A(int num) {
std::cout << "cons A\n";
}
~A() {
std::cout << "dis A\n";
}
};
int main() {
std::shared_ptr<A> ptr(new A(12));
{
std::cout << "Inside Scope \n";
std::shared_ptr<A> ptr1 = ptr;
std::cout << "Outside Scope \n";
}
std::shared_ptr<A> ptr2(ptr.get());
std::cout << ptr << std::endl;
}
下面给出了抛出异常的输出
cons A
Inside Scope
Outside Scope
dis A
dis A
free(): double free detected in tcache 2
任何人都可以解释这种行为还是我误读了什么?提前致谢。
【问题讨论】:
标签: c++ stl smart-pointers