为什么 unique_ptr 不能从 T* 构造?

2024-04-18

举个简单的例子,这段代码有什么“问题”?

unique_ptr<char> meow = strdup("meow");

我是否向unique_ptr模板,一个unique_ptr<T>不能从分配T*.

为什么不呢<memory>提供这个看似直观的快捷方式吗?这只是一个疏忽,还是出于某种原因,这种可分配性从根本上来说是一个坏主意?


为什么不呢<memory>提供这个看似直观的快捷方式吗?

想象一下你有

int bar;
{
    int * foo = &bar;
    std::unique_ptr<int> uptr = foo;
    // use uptr
}

When uptr超出范围,它将尝试做delete pointer;,它将尝试调用delete在未分配的内存上new。这是未定义的行为,可能会导致各种问题。该标准不允许编写这样的有缺陷的代码,而是不允许这样做。

如果您确实确定要构建一个unique_ptr从现有的指针,并且您知道默认删除器是您想要的,那么您可以使用以下形式

auto pointer_name = std::unique_ptr<type>(pointer_i_know_needs_to_be_deleted);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 unique_ptr 不能从 T* 构造? 的相关文章

  • MongoDB C# 驱动程序检查身份验证状态和角色

    这是我使用 MongoDB 身份验证机制登录 MongoDB 的代码 try var credential MongoCredential CreateMongoCRCredential test admin 123456 var sett
  • 我可以使用反射更改 C# 中的私有只读字段吗?

    我想知道 由于很多事情都可以使用反射完成 我可以在构造函数完成执行后更改私有只读字段吗 注 只是好奇 public class Foo private readonly int bar public Foo int num bar num
  • 将 2D 数组映射到 1D 数组

    我想用一维数组来表示一个二维数组 函数将传递两个索引 x y 和要存储的值 这两个索引代表一维数组的单个元素 并相应地设置它 我知道一维数组需要具有 arrayWidth arrayHeight 的大小 但我不知道如何设置每个元素 例如 如
  • 为什么C Clock()返回0

    我有这样的事情 clock t start end start clock something else end clock printf nClock cycles are d d n start end 我总是得到输出 时钟周期是 0
  • 当我单击 GridView 项时返回 ImageView 实例

    当我点击GridView项时如何返回ImageView实例 我为 ItemClick 创建自定义绑定事件 public class ItemClickSquareBinding MvxBaseAndroidTargetBinding pri
  • 身份未映射异常

    System Security Principal IdentityNotMappedException 无法转换部分或全部身份引用 该错误仅在应用程序注册后出现一次 当 SecurityIdentifier 无法映射时 例如 返回 Ide
  • __FUNCTION__ 宏的 C# 版本

    有人对 C FUNCTION 宏的 C 版本有好的解决方案吗 编译器似乎不喜欢它 尝试使用这个代替 System Reflection MethodBase GetCurrentMethod Name C 没有 LINE or FUNCTI
  • glDrawElements 只绘制半个四边形

    这是我的功能 void Object draw2 if mIsInitialised return Tell OpenGL about our vertex and normal data glEnableClientState GL VE
  • 如何在不使用reinterpret_cast的情况下使用dlsym()加载函数?

    我正在尝试使用 clang tidy 来强制执行 C 核心指南 虽然它确实有很多有效点 但有一件事我无法真正解决 dlsym 返回一个void 我需要以某种方式将其转换为正确的函数指针 为此 我使用reinterpret cast 由于指南
  • 抽象类和接口之间的区别[重复]

    这个问题在这里已经有答案了 可能的重复 接口与基类 https stackoverflow com questions 56867 interface vs base class 我不明白抽象类和接口之间的区别 我什么时候需要使用哪种字体
  • C#:如何使用 SHOpenFolderAndSelectItems [重复]

    这个问题在这里已经有答案了 有人可以举例说明如何使用 shell 函数吗SH打开文件夹并选择项目 http msdn microsoft com en us library bb762232 VS 85 aspx来自 C 我不太明白如何使用
  • 在可观察项目生成时对其进行处理

    我有一个IObservable它会生成一次性物品 并且在其生命周期内可能会生成无限数量的物品 因此 我想在每次生成新项目时处理最后一个项目 因此Using http reactivex io documentation operators
  • 使用 Linq 进行异步Where过滤

    我有一个List通过填充的元素async调用 WebService 没问题 我需要过滤该列表以便在应用程序视图上显示某些内容 我试过这个 List
  • 删除对象时指针自动指向空

    假设我有一个对象和其他几个不同类类型的对象中的 10 个指向它的指针 如果对象被删除 这些指针必须设置为空 通常我会将对象的类与具有指向它的指针的类互连 以便它可以通知它们它正在被删除 并且它们可以将它们的指针设置为空 但这也有一个负担 即
  • 在 unix 中编译 dhrystone 时出错

    我是使用基准测试和 makefile 的新手 我已经从下面的链接下载了 Dhrystone 基准测试 我正在尝试编译它 但我遇到了奇怪的错误 我尝试解决它 但没有成功 有人可以帮助我运行 dhrystone 基准测试吗 以下是我尝试编译的两
  • 宏观评价[重复]

    这个问题在这里已经有答案了 可能的重复 未定义的行为和序列点 https stackoverflow com questions 4176328 undefined behavior and sequence points 我无法理解以下宏
  • 多个同名内存数据库

    关系到这个答案 https stackoverflow com a 48446491 596758 我试图通过设置让多个上下文工作UseInMemoryDatabase以同名 下面的测试失败 第二个上下文为空 我还需要做什么才能在内存数据库
  • 局部静态变量初始化是线程安全的[重复]

    这个问题在这里已经有答案了 假设我有一个包含三个静态函数的类 如下所示 include
  • 从 C# 中的 .NET SecureString 读取单个字符?

    WPF 的PasswordBox 返回一个SecureString 它对窥探者隐藏密码 问题是你最终必须获得密码的值 而我在网上找到的建议都涉及将值复制到字符串中 这会让你回到窥探者的问题 IntPtr bstr Marshal Secur
  • 如何仅更改 DateTime 的日期部分,同时保留时间部分?

    我在代码中使用了很多 DateTime 我想将这些日期时间更改为我的特定日期并保留 时间 1 2012 02 02 06 00 00 gt 2015 12 12 06 00 00 2 2013 02 02 12 00 00 gt 2015

随机推荐

  • 如何找到射线与移动圆的第一个交点

    我已经在一个问题上苦苦挣扎了一段时间 到目前为止还没有找到比天真的解决方案更好的解决方案 N circles are given that are moving according to a linear law For each of t
  • ReactJS 通过 API 调用保护路由

    我正在尝试保护 ReactJS 中的路由 在每个受保护的路由上 我想检查保存在 localStorage 中的用户是否良好 下面你可以看到我的路线文件 app js class App extends Component render re
  • Doctrine QueryBuilder 和 concat 问题

    我有以下代码 它依赖于 Doctrine 的 QueryBuilder API 来生成 DQL 语句 class PlayerRepository extends EntityRepository public function findB
  • Java:字符串到布尔值

    我必须读一本String从一个字段 然后将其转换为Boolean 我试过这个 ObjectInputStream nm nm new ObjectInputStream new FileInputStream buscamines txt
  • 如何在一个Web应用程序上下文中访问另一个Web应用程序上下文

    我在 Tomcat6 服务器中部署了两个 WAR 例如WAR A WAR B in Context A and Context B分别 我已经存储了一些数据Context A 我想读取该数据Context B 我已经通过网络找到了一些方法来
  • 绑定 Telerik RadTreeView 客户端

    我有一个 javascript 对象数组 我想用它来填充 RadTreeView 除了为我的对象集合手动编写自己的绑定方法之外 我不知道如何从客户端完成此操作 我的 javascript 数组中的每个对象都有 ID 父ID 价值 文本 有没
  • Django Rest Framework - 如何为所有 ModelSerializer 字段创建自定义错误消息?

    这是我的serializers py 我想为内置用户模型创建一个序列化器 from rest framework import serializers from django contrib auth models import User
  • Solidity有HTTP请求功能吗?

    我正在使用以太坊制作一个项目 在这个项目中 我正在签订一份名为 A 的合同 当我向 A 发送消息时 我希望 A 发出网络请求 Solidity 是否可以使用 http 请求 方法 GET POST 以太坊区块链无法与外界交互 否则它将不再是
  • 响应预期内容长度返回-1

    您好 当我从网络服务加载数据时 我需要创建一个进度视图 实际上预期的内容长度总是返回 1 在查看了很多相似问题之后 看起来我的网络服务从未发送内容长度 然后我检查 CURL 结果如下 lt HTTP 1 1 200 OK lt Date T
  • R Stargazer 报告系数、置信区间和精确 p 值

    我正在运行一个国家固定效应模型 进一步包括一个虚拟变量 我正在使用 Stargazer 包 但似乎无法弄清楚如何报告置信区间和确切的 p 值 如果我运行我的模型 stargazer dummy CPP title xx align TRUE
  • 我用带有垃圾收集器的语言构建了一个解释器。我需要一个用于解释器的垃圾收集器吗?

    这是一个幼稚的问题 但在我迄今为止看到的教程中并没有拼写清楚 如果我在一种高级语言 不是 C C 等 之上构建一个解释器 并且它有一个垃圾收集器 是否有必要为解释器本身制作一个 如果答案是肯定的 那一定是同一类宿主吧 即 如果主机是标记 清
  • android 上下文空指针异常

    我对 android Context 有一个小问题 我不知道如何解决这个问题 这是我正在使用的代码 public class TestActivity Context context public static String getPack
  • 在目录上运行 ng lint 时遇到问题

    我正在尝试使用 Angular 8 附带的 linter 但我有一段时间忽略了 TSLint 错误 我希望慢慢地清除错误 并且我正在寻找一种在整个目录上运行 linter 的方法 其中一些目录可能有多个子目录 我看过ng lint 的 An
  • Git Cherry-Pick 和冲突

    有两个不同的 git 分支 其中一个开发正在进行 Branch1 在其他分支中 一些 PoC 工作正在进行 Branch2 现在 我想挑选从 Branch1 到 Branch2 的更改 以便 Branch2 是最新的 现在 在挑选 4 或
  • 对于“未找到项目”错误页面,最合适的 HTTP 状态代码是什么

    我很好奇 项目不存在 页面最合适的 HTTP 状态代码是什么 如果页面本身不存在 我显然会使用 404 但是 我的其中一个页面有一个userid参数 它是一个 编辑用户 页面 如果不存在具有给定用户 ID 的用户 我将显示一个错误页面 但我
  • 谷歌合作实验室“ResourceExhaustedError”与 GPU

    我正在尝试微调Vgg16模型使用colaboratory但我在使用 GPU 训练时遇到了这个错误 OOM when allocating tensor of shape 7 7 512 4096 INFO tensorflow Error
  • 无空间分页库

    新分页库的所有示例都已包含在 Room 库中 Room 为我们创建了一个数据源 就我自己而言 我需要创建自定义数据源 这是我的视图模型类中的一个方法 它应该返回实时数据 我的 livedata 总是返回 null LiveData
  • Cakephp 递归条件下的分页

    我对这个问题很生气 请有人帮助我 我有这个模型 订单有很多 gt 订单项有一个 gt 产品 产品有字段vendor id 我想对包含具有特定供应商 ID 的产品的订单进行分页 我怎样才能实现这个目标 我在订单控制器中的代码 if empty
  • 转义 Django 模板变量的简单方法

    对于一个新项目 我们正在编写文档aboutDjango 模板系统 我们也将 Django 用于文档项目本身 因此 Django 会选取示例代码中的所有示例变量并尝试呈现它们 我们发现解决这个问题的唯一方法是使用 模板标签 http docs
  • 为什么 unique_ptr 不能从 T* 构造?

    举个简单的例子 这段代码有什么 问题 unique ptr