shared-ptr - 指向智能指针的指针,用途
问题描述
谁能解释这是如何工作的。
shared_ptr<T> *p = new shared_ptr<T>(x);
我应该做delete p; p = NULL;
谢谢
解决方案
shared_ptr<T> *p = new shared_ptr<T>(x);
这是非常不习惯的,不推荐,不是好的设计。
shared_ptr<T>
用于自动内存管理:您不必delete
对shared_ptr
. 你需要确保
x
指向T
分配的对象new
- 没有其他代码尝试解除分配
x
出于某种原因,代码分配了一个shared_ptr
with new
:自动内存shared_ptr
管理工具(避免忘记删除或过早删除的风险。delete
shared_ptr
我应该做
delete p; p = NULL;
是的,您需要delete p;
并且p = NULL;
是可选的,但如果其他代码可能需要检查是否p
指向对象,则这是必需的。
一个类比是有一个闹钟来叫醒你,在时间 T 设置闹钟,取出时钟中的电池,然后让朋友在时间 T 将电池放回闹钟中,这样它就可以唤醒你.
无论如何,您应该质疑生成此类代码的工具的质量。
推荐阅读
- json - 如何使用数据类在 Kotlin 中解决“无法编写 JSON:无限递归 (StackOverflowError)”?
- python - 将透视变换图像坐标转换为源图像坐标
- snakemake - Snakemake:参数键的通配符
- python - 如何使用微调的 BERT 模型进行句子编码?
- image - 为什么 Scilab 不打开图像文件?
- javascript - jsGrid在编辑功能中改变输入的类型
- email - 如何触发在启用逻辑应用程序之前到达的实际电子邮件的运行?
- android - kotlinx 序列化。反序列化泛型参数麻烦
- android - 使用广播接收器以编程方式检查开发人员选项
- java - 如何在 optional.orElseThrow(..) 中抛出异常之前执行操作