shared_ptr的get函数
时间: 2024-02-27 18:47:37 浏览: 25
shared_ptr的get函数返回一个指向所管理对象的指针。实际上,它返回的是一个裸指针,不会对引用计数造成影响。
可以通过使用get函数来访问被shared_ptr管理的对象。需要注意的是,get函数返回的指针不能用来初始化另一个shared_ptr对象,否则会导致同一个对象有多个引用计数器。
下面是一个示例:
```
#include <iostream>
#include <memory>
int main() {
std::shared_ptr<int> ptr = std::make_shared<int>(42);
int *raw_ptr = ptr.get();
std::cout << *raw_ptr << std::endl;
*raw_ptr = 100;
std::cout << *ptr << std::endl;
return 0;
}
```
输出为:
```
42
100
```
可以看到,通过get函数获取的裸指针可以访问被shared_ptr管理的对象,并且可以修改这个对象的值。
相关问题
c++ shared_ptr get
shared_ptr的get()函数是用来返回当前存储的指针,也就是被shared_ptr所管理的指针。但是不建议使用get()函数获取shared_ptr关联的原始指针,因为如果在shared_ptr析构之前手动调用了delete函数,会导致错误。[1]
在示例代码中,shared_ptr的get()函数被用来获取传统C指针。例如,可以通过shared_ptr的get()函数将shared_ptr转换为普通指针,然后将其赋值给另一个指针变量。但是需要注意的是,这种操作需要谨慎使用,以避免在shared_ptr析构后访问已释放的内存。[1]
另外,需要注意的是,不要使用shared_ptr的get()函数来初始化另一个shared_ptr,这样会导致两个shared_ptr共享同一个计数器,可能会导致计数器错误递增或递减,从而导致内存泄漏或释放错误。[3]
shared_ptr get
shared_ptr的get()函数是用来获取shared_ptr所管理的对象的指针。它返回一个指向共享对象的原始指针。这个函数主要用于需要使用普通指针的情况,比如需要传递给C风格的库函数或者需要进行指针运算的情况。需要注意的是,get()函数返回的指针不能用来删除共享对象,否则会导致未定义行为。+<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [Th5.3:智能指针(shared_ptr)之详述](https://blog.csdn.net/weixin_44980842/article/details/121706305)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *2* *3* [C++11-shared_ptr详解](https://blog.csdn.net/younow22/article/details/114547539)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)