我们如何知道指针是用 new 还是 new[] 分配的?

Fay*_*ure 4 c++

我正在尝试在 C++ 中实现 unique_ptr 类,但如何知道我们传递给它的指针是否是使用newnew[]不使用 using分配的default_delete(我的学校标准不允许 c++11)。我的意思是,当您将指针传递给构造函数时,例如:

unique_ptr<int> ptr(new int[10]);
Run Code Online (Sandbox Code Playgroud)

你如何知道班级内部是否需要打电话delete[]delete

Hol*_*Cat 6

你说不出来。并且也不能std::unique_ptr

想一想。如果它可以自动确定,你就不需要两种delete.

std::unique_ptr<int> ptr(new int[10]);是错误的,因为它会调用delete,而不是delete[].

使用std::unique_ptr<int[]> ptr(new int[10]);相反,它将调用delete[], 而不是delete

  • `unique_ptr&lt;type[]&gt;` 另请参阅谷歌搜索“unique_ptr for array” (2认同)