char ポインターに一意のポインターを使用したい。どのような場合に削除関数を unique_ptr に渡す必要があるかを知る必要があります。
std::unique_ptr<char[]> pChar(new char [size])
と、
std::unique_ptr<char*> pChar(new char [size])
char[] の場合、コンパイラは delete [] を呼び出すと思いますが、char* はどうでしょうか。
ありがとう
char ポインターに一意のポインターを使用したい。どのような場合に削除関数を unique_ptr に渡す必要があるかを知る必要があります。
std::unique_ptr<char[]> pChar(new char [size])
と、
std::unique_ptr<char*> pChar(new char [size])
char[] の場合、コンパイラは delete [] を呼び出すと思いますが、char* はどうでしょうか。
ありがとう
char[]コンパイラの場合はstd::default_delete<char[]>、実際にdelete[]を呼び出します。char*コンパイラの場合std::default_delete<char*>は、実際に を呼び出しますdelete。
ただし、 forは単にであるstd::unique_ptr<char*>ためT、を初期化することはできません。std::unique_ptr<T>::pointerT*
smart_pointerこのようなものを使用できますが、ポインターにすると、非常に奇妙だと思います
char* pp = new char[1];
auto deleter = [](char** p) { delete[] *p; };
std::unique_ptr<char*, decltype(deleter)> p(&pp, deleter);