对于boost :: shared_array来说,这是一个问题。我需要分配一个数组并将其传递给另一个线程来处理其数据,然后删除数组。 我无法理解下面的情况会发生什么:
void deletePtr(boost::shared_array<char> ptr)
{
std::cout <<"c3= " <<ptr.use_count() << std::endl;
ptr.reset();
}
int main()
{
int i = 0;
while (i < 3)
{
char* a = new char[3]{'3','2','1'};
boost::shared_array<char> ptr(a);
std::cout << "c1= " << ptr.use_count() << std::endl;
boost::thread t(boost::bind(deletePtr, ptr));
std::cout <<"c2= " <<ptr.use_count() << std::endl;
i++;
}
return 0;
}
我得到了:c1 = 1,c2 = 2,c3 = 3
c1和c2的结果是我的预期,但c3应该是1,所以两个额外的所有者来自哪里? 谢谢你的帮助