char指针的删除函数

时间:2013-04-30 09:00:31

标签: c++ unique-ptr

我想在char指针上使用唯一指针。我需要知道在哪些情况下需要将删除函数传递给unique_ptr。

std::unique_ptr<char[]> pChar(new char [size])

 std::unique_ptr<char*> pChar(new char [size])

我猜对于char [],编译器会调用delete [],但是char *?

由于

1 个答案:

答案 0 :(得分:2)

对于char[]编译器选择std::default_delete<char[]>,实际调用delete[]char*编译器选择std::default_delete<char*>,实际调用delete。< / p>

但是,在尝试时,您无法初始化std::unique_ptr<char*>,因为对于Tstd::unique_ptr<T>::pointer只是T*

你可以使用这样的东西,但我觉得smart_pointer指针,这很奇怪

   char* pp = new char[1];
   auto deleter = [](char** p) { delete[] *p; };
   std::unique_ptr<char*, decltype(deleter)> p(&pp, deleter);