新的 auto 关键字指针会自行删除吗?
the new auto keyword pointer does delete itself?
如果我有这条线
auto* f = new boost::posix_time::time_input_facet("%d %b %Y %H:%M:%S");
我必须删除指针吗?或者它会自行清理?
delete f; // ??
我知道 auto_ptr 和 shared_ptr 会自动删除,但我不知道 auto
auto
和auto_ptr
没有任何关系,它只是告诉编译器推导出一个类型。
所以是的,在您提供的示例中,需要 delete
。
稍微跑题了:你提到了auto_ptr
(这个已经弃用)和shared_ptr
,但是还有unique_ptr
,它非常方便,因为它非常轻巧(实际上没有开销),并且可以在只有一个所有者时使用。
如果我有这条线
auto* f = new boost::posix_time::time_input_facet("%d %b %Y %H:%M:%S");
我必须删除指针吗?或者它会自行清理?
delete f; // ??
我知道 auto_ptr 和 shared_ptr 会自动删除,但我不知道 auto
auto
和auto_ptr
没有任何关系,它只是告诉编译器推导出一个类型。
所以是的,在您提供的示例中,需要 delete
。
稍微跑题了:你提到了auto_ptr
(这个已经弃用)和shared_ptr
,但是还有unique_ptr
,它非常方便,因为它非常轻巧(实际上没有开销),并且可以在只有一个所有者时使用。