Search code examples
c++c++11new-operatorsmart-pointersunique-ptr

Do smart pointers work with arrays allocated using new T[]?


How do smart pointers handle arrays? For example,

void function()
{
    std::unique_ptr<int> my_array(new int[5]);
}

When my_array goes out of scope and gets destructed, does the entire integer array get re-claimed? Is only the first element of the array reclaimed? Or is there something else going on (such as undefined behavior)?


Solution

  • It will call delete[] and hence the entire array will be reclaimed but I believe you need to indicate that you are using an array form of unique_ptrby:

    std::unique_ptr<int[]> my_array(new int[5]);
    

    This is called as Partial Specialization of the unique_ptr.