class T
{
public:
void doSomething()
{
std::cout << "T do something..." << m_i << std::endl;
}
private:
int m_i;
};
int main()
{
std::shared_ptr<T> sp1(new T());
const auto& sp2 = sp1;
sp1.reset();
//由于sp2已经不再持有对象的引用,程序会在这里出现意外的行为
sp2->doSomething();
return 0;
}
111111111
于 2023-06-07 19:49:46 首次发布
该代码示例展示了C++中使用智能指针shared_ptr管理对象生命周期的问题。创建了一个T类实例,通过两个shared_ptr(sp1和sp2)共享。当sp1调用reset()释放对象后,sp2仍试图访问已销毁的对象,导致意外行为。
1358

被折叠的 条评论
为什么被折叠?



