新的auto关键字指针会自行删除吗?

Mar*_*o M 0 c++ pointers auto

如果我有这条线

auto* f = new boost::posix_time::time_input_facet("%d %b %Y %H:%M:%S");
Run Code Online (Sandbox Code Playgroud)

我必须删除指针吗?或者它自己清理?

delete f; // ??
Run Code Online (Sandbox Code Playgroud)

我知道auto_ptr和shared_ptr会自动删除,但我不知道auto

Oli*_*ohn 5

auto与此无关auto_ptr,它只是告诉编译器推导出一种类型.

所以,是的,在您提供的示例中,delete是必需的.

稍微偏离主题:你提到的auto_ptr(这个人是不建议使用)和shared_ptr,但也有unique_ptr其相当方便,因为它是非常轻巧(几乎没有开销),当有一个所有者都可以使用.