
C++11智能指针
文章平均质量分 78
介绍c++11中引入的智能指针shared_ptr、weak_ptr和unique_ptr,并用示例简单说明使用方法以及过程中需要注意的问题
小麒麟666
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C++11智能指针(一):shared_ptr介绍与实例
什么是std::shared_ptr<>?std::shared_ptr<>是c++11中引入的一种智能指针,它足够聪明,如果指针不在任何地方使用,就会自动删除指针。这可以帮助我们彻底消除内存泄露和悬挂指针的问题。shared_ptr和共享所有权它遵循共享所有权的概念,即不同的shared_ptr对象可以与相同的指针相关联,并且在内部使用引用计数机制来实现。每个shared...原创 2018-02-05 15:16:55 · 7966 阅读 · 0 评论 -
c++11智能指针(二):shared_ptr和自定义的Deleter
本节讨论怎样使用 std::shared_ptr自定义Deleter.当一个shared_ptr对象超出作用域时,其析构函数被调用,在析构函数中,将其引用计数减1,如果引用计数的值变为0,则删除关联的原始指针。要删除析构函数中的内部原始指针,默认情况下,shared_ptr调用delete()函数,即delete Pointer;但是,我们在析构函数中并不总是要使用delete函数,还可能有其他的...原创 2018-02-06 17:48:30 · 17854 阅读 · 2 评论 -
c++11智能指针(三):shared_ptr和指针
本节对比一下C++11智能指针的实现shared_ptr和普通的指针从以下几个方面比较:++,--和[]操作符相比于原始指针,shared_ptr只提供这些运算符:1) ->, *2) 比较运算符但是,shared_ptr不提供1) 指针运算比如+,-,++,--2) Operator []例子:#include <iostream>#include <memory>...原创 2018-02-09 11:53:27 · 1677 阅读 · 0 评论 -
C++11智能指针(四):创建shared_ptr对象
1、尽量不要使用相同的原始指针来创建多个shared_ptr对象,因为在这种情况下,不同的shared_ptr对象不会知道它们与其他shared_ptr对象共享指针。这样会造成什么样的问题?设想两个shared指针由相同的原始指针创建:int *rawPtr = new int();std::shared_ptr<int> ptr_1(rawPtr);std::shared_ptr...原创 2018-02-11 16:49:52 · 8028 阅读 · 0 评论 -
C++11智能指针(五):shared_ptr的循环引用的问题及weak_ptr
shared_ptr的主要优点是当不再使用时会自动释放相关的内存。但是如果我们不仔细使用shared_ptr,那么这个优势就会变成一个劣势。 我们来看看:假设我设计一个二叉树,并在其中包含一个指向左右子节点的指针。#include <iostream>#include <memory>class Node { int value; public: std::...原创 2018-02-12 10:30:27 · 9200 阅读 · 4 评论 -
C++11智能指针(六):unique_ptr介绍与例子
本节介绍下c++11提供的智能指针实现: std::unique_ptr<>什么是std::unique_ptrunique_ptr <>是c ++ 11提供的智能指针实现之一,用于防止内存泄漏。unique_ptr对象包含一个原始指针,并负责其生命周期。当这个对象被销毁的时候,它的析构函数会删除关联的原始指针。unique_ptr有重载的- >和*运算符,所以它可以...原创 2018-02-12 10:31:10 · 12513 阅读 · 1 评论