C++智能指针自动释放动态数组

C++ smart pointer auto free for dynamic array

我想自动释放我的动态数组。

#include <iostream>
#include <memory>    

void myFunction(int* arg)
{
    // do something without delete
}

int main ()
{
  int* l_pBuffer = new int[8];

  std::unique_ptr<int[]> l_autoFree(l_pBuffer);  //<--- option 1
  std::unique_ptr<int> l_autoFree(l_pBuffer);    //<--- option 2

  myFunction(l_pBuffer);

  return 0;
}

因为它是一个动态数组,我应该选择选项 1 吗?

是的,使用new[]分配的数组时需要使用std::unique_ptr<T[]>。否则数组将无法正确释放。

更好的选择是使用 std::make_unique<T[]>(),甚至 std::vector