Существует специализация unique_ptr
, например unique_ptr<T[]>
.
#include <iostream>
#include <memory>
struct test
{
~test() { std::cout << "test::dtor" << std::endl; }
};
int main()
{
std::unique_ptr<test[]> array(new test[3]);
}
Когда вы запустите его, вы получите это сообщение.
test::dtor
test::dtor
test::dtor
Если вы хотите использовать shared_ptr
, вы должны использовать std::default_delete<T[]>
для удаления, поскольку у него нет такого, как shared_ptr<t[]>
.
std::shared_ptr<test> array(new test[3], std::default_delete<test[]>());