首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我不能在smart_pointers中使用“`new []”?

为什么我不能在smart_pointers中使用“`new []”?
EN

Stack Overflow用户
提问于 2015-08-15 11:17:39
回答 1查看 309关注 0票数 4

为什么我不能将new [ ]与smart_pointers结合使用?

其实我听不懂这篇文章。

请注意,您应该只对new分配的内存使用auto_prt或shared_ptr对象,而不是对new []分配的内存使用。您不应该将auto_ptr、shared_ptr、orunique_ptr用于未通过new分配的内存,对于unique_ptr,则不应使用new或new[]。

EN

回答 1

Stack Overflow用户

发布于 2015-08-15 12:12:29

示例:

代码语言:javascript
复制
#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中引入的,第一种和第三种代表了新事物的独特所有权,第二种代表了新事物的共同所有权。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32024181

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档