C++11 共享ptr重置引发分段故障

C++11 共享ptr重置引发分段故障,c++11,segmentation-fault,shared-ptr,C++11,Segmentation Fault,Shared Ptr,出于好奇,尝试此程序以了解原始指针上的共享\u ptr行为。我希望问题可能是双重删除,但这里我面临其他问题: MyClass *raw_ptr = new MyClass(); shared_ptr<MyClass> sptr1(raw_ptr); shared_ptr<MyClass> sptr2 = sptr1; cout << sptr1.use_count() << endl; // prints 2 sptr1.reset(); // o

出于好奇,尝试此程序以了解原始指针上的共享\u ptr行为。我希望问题可能是双重删除,但这里我面临其他问题:

MyClass *raw_ptr = new MyClass();
shared_ptr<MyClass> sptr1(raw_ptr);
shared_ptr<MyClass> sptr2 = sptr1;
cout << sptr1.use_count() << endl; // prints 2
sptr1.reset(); // occurs Segmentation Fault here
MyClass*raw_ptr=newmyclass();
共享ptr sptr1(原始ptr);
共享的ptr sptr2=sptr1;

cout该代码中没有问题。非常好


因此,要么你的编译器坏了,要么你的开发环境坏了,要么你没有向我们展示导致崩溃的其他代码。

对我有用:你确定调用
reset()
时会发生异常吗,或者当
sptr2
超出范围并且
MyClass
对象被删除时?分段错误可能发生在其析构函数中。很抱歉造成混淆。错误在我的代码中,我在重置后立即使用sptr1调用类的成员,这导致了SEGFULT。谢谢,实际错误在我代码的下一行。重置后,我试图使用sptr1访问我的类成员。这就是崩溃的原因。谢谢
cout << "count: "<< sptr1.use_count() 
     << "value: "<< sptr1->a;