【发布时间】:2013-05-11 13:30:19
【问题描述】:
在了解 auto_ptr、unique_ptr 和 shared_ptr 时,我了解到 auto_ptr 析构函数使用的是 delete,而不是 delete[] unique_ptr 确实可以正确处理它。
auto_ptr<char> aptr(new char[100]);
unique_ptr<char []> uptr(new char[100]);
无论如何 auto_ptr 在 c++11 中已被弃用。而且我知道 unique_ptr 的功能比 auto_ptr 多得多。 我有两个与此行为有关的问题
a) 为什么 c++ 标准库团队在为 auto_ptr 设计行为时没有考虑到它对数组的不利影响。
b) 即使在 c++11 中引入了 shared_ptr,为什么它的实现不支持删除数组?
【问题讨论】:
-
你不应该首先处理普通数组。您可以使用指向
std::array或std::vector或您选择的容器的智能指针。