c shared_ptr数组示例
时间: 2023-10-17 13:17:28 浏览: 43
下面是一个示例代码,展示如何使用C++中的shared_ptr来管理动态分配的数组:
```c++
#include <iostream>
#include <memory>
int main()
{
// 创建一个指向int数组的shared_ptr
std::shared_ptr<int[]> arr(new int[5]);
// 为数组赋值
for (int i = 0; i < 5; i++) {
arr[i] = i;
}
// 输出数组的值
for (int i = 0; i < 5; i++) {
std::cout << arr[i] << " ";
}
std::cout << std::endl;
// 现在可以使用arr的拷贝或者赋值来传递数组
std::shared_ptr<int[]> arr2 = arr;
// 释放arr的所有权
arr.reset();
// 输出数组的值
for (int i = 0; i < 5; i++) {
std::cout << arr2[i] << " ";
}
std::cout << std::endl;
return 0;
}
```
在这个例子中,我们首先创建了一个指向int数组的shared_ptr,然后使用循环为数组赋值。接着,我们可以使用shared_ptr的拷贝或者赋值来传递这个数组。最后,我们通过调用reset()函数来释放arr的所有权,这个数组的所有权现在被arr2所持有。