c++ - 带数组指针的 std::unique_ptr

标签 c++ pointers stl

这样安全吗?

std::unique_ptr<A> ptr(new A[100]);

ptr 超出范围并调用其析构函数时,它会错误地删除指针,还是删除[]它?

最佳答案

您必须正确指定 unique_ptr 将持有的类型才能正常工作:

std::unique_ptr<A[]> ptr(new A[100]);

这将默认为使用 delete[] 而不是 delete 的删除器。

关于c++ - 带数组指针的 std::unique_ptr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22757412/

相关文章:

c++ - 在抽象基类中使用 unique_ptr 作为私有(private)成员

c++ - 使用指向抽象基类的指针时,是否有更有效的方法来获取派生类的类型?

c++ - Windows.h 导致 C++ 类出现问题

c++ - 指向重载函数的指针

arrays - 如何借助 Julia 中的指针访问和更改数组中的元素?

c++ - 我如何比较 std::map 的正文成员?

c++ - 带有 set 的 std::inserter - 插入到 begin() 或 end()?

c++ - 重载函数候选匹配问题

c - 表达式必须是可修改的左值(指向结构的指针)

c++ - STL容器: iterating between two iterators