欢迎使用CSDN-markdown编辑器

来源:互联网 发布:Buffer cache linux 编辑:程序博客网 时间:2024/06/03 16:06

被重复释放坑了

对于编译器来说,智能指针实际上是一个栈对象,并非指针类型,在栈对象生命期即将结束时,智能指针通过析构函数释放有它管理的堆内存。所有智能指针都重载了“operator->”操作符,直接返回对象的引用,用以操作对象。访问智能指针原来的方法则使用“.”操作符。

问题重现:
std::shared_ptr<string>str1(new string("sdfsdfsgsd"));
std::shared_ptr<string>str2;
str2.reset((string*)str1.get());

当str1和str2释放时,会对new出来的string进行delete两次。

0 0
原创粉丝点击