智能指针的相关问题

智能指针是C++11的新特性,包括共享指针、独占指针、弱指针,其主要目的是智能管理内存,防止内存泄漏。

如果计数为0,会立即delete。此外,独占指针其生命周期只在作用域内。

//动态数组申请方法
shared_ptr<int[]> p(new int[10]);
//动态变量申请方法
shared_ptr<int> p(new int);

共享指针的特点是允许多个智能指针指向资源,独占则是不允许其他指针指向资源,但可以通过引用取值,弱指针是一个观测指针。

move函数可以移交指针管理权。

get函数可以获取指针地址,注意,此时已不再是智能指针。

reset函数是重设指针,如果是共享指针计数为0或独占指针时,会析构。

其他的一些知识,请看:

智能指针(现代 C++) | Microsoft Learn

关于弱指针,可以看这篇文章,主要是避免循环引用导致共享指针失效。

 (21条消息) C++智能指针3——弱指针weak_ptr详解_c++ weak_ptr_写有意思的代码的博客-CSDN博客

posted @ 2023-03-07 11:07  澳大利亚树袋熊  阅读(46)  评论(0)    收藏  举报