任何人都可以解释这是如何工作的。
shared_ptr<T> *p = new shared_ptr<T>(x);
我应该delete p; p = NULL;
谢谢
答案 0 :(得分:0)
shared_ptr<T> *p = new shared_ptr<T>(x);
这是非常不习惯的做法,不建议使用,设计也不好。
shared_ptr<T>
用于自动内存管理:您不必delete
shared_ptr
管理的对象。您需要确保
x
指向分配有T
的{{1}}对象new
由于某种原因,代码为x
分配了shared_ptr
:自动内存管理工具(new
)是通过手动管理的>此处:您必须记住在不需要 it 时(而不是更早版本)shared_ptr
delete
,“ it”是唯一目的的工具是为了避免忘记删除或过早删除的风险。
我应该
shared_ptr
是的,您需要delete p; p = NULL;
,并且delete p;
是可选的,但如果其他代码可能需要检查p = NULL;
是否指向对象,则是必需的。
打个比方,是要有一个闹钟叫醒您,在时间T设置闹钟,从时钟中取出电池,然后请朋友在时间T将电池放回闹钟中,以便叫醒你。
无论如何,您应该质疑产生这种代码的工具的质量。