为什么我不能将new [ ]与smart_pointers结合使用?
其实我听不懂这篇文章。
请注意,您应该只对new分配的内存使用auto_prt或shared_ptr对象,而不是对new []分配的内存使用。您不应该将auto_ptr、shared_ptr、orunique_ptr用于未通过new分配的内存,对于unique_ptr,则不应使用new或new[]。
发布于 2015-08-15 12:12:29
示例:
#include <memory>
int
main()
{
auto p1 = std::unique_ptr<char[]>{new char[3]}; // C++11
auto p2 = std::shared_ptr<char>{new char[3], [](char* p) {delete [] p;}}; // C++11
auto p3 = std::make_unique<char[]>(3); // C++14
}第一和第二是有利于C++11和前进。第三种是在C++14中引入的,第一种和第三种代表了新事物的独特所有权,第二种代表了新事物的共同所有权。
https://stackoverflow.com/questions/32024181
复制相似问题