为什么我在使用 unique_ptr 时没有调用析构函数?



这里我正在创建S对象的动态分配数组,我希望它们被unique_ptr破坏,但这并没有发生,我得到了这个错误

命令由信号11 终止

这意味着程序访问了内存,就我而言,它不应该访问这些内存。

#include <iostream>
#include <memory>
class S{
public:
S(){std::cout<<"Constructorn";}
~S(){std::cout<<"Destructorn";}
};
int main() {
S* arr=new S[4];
{
using namespace std;
unique_ptr<S> ptr=unique_ptr<S>(arr);
}
}
new s[4]

如果使用new[]分配,则必须使用delete[]而不是delete销毁它。

auto ptr = unique_ptr<S[]>(arr);

相关内容

  • 没有找到相关文章

最新更新