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
。
我想自动释放我的动态数组。
#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
。