智能指针用来管理动态对象。其行为类似于常规指针,重要的差别是:它负责自己主动释放所指向的对象。 C++ 11标准库提供两种智能指针:shared_ptr、unique_ptr 差别是:shared_ptr同意多个指针指向同一个对象;unique_ptr则独占所指向的对象。 另外。另一种weak_ptr的伴随类,它是一种弱引用。指向shared_ptr所管理的对象。
智能指针从本质上来说是一个模板类,用类实现对指针对象的管理。 template <typename T> class shared_ptr; template <typename Y, class Deleter> shared_ptr(Y* ptr, Deleter d); template <typename Y, class Deleter, class Alloc> shared_ptr(Y* ptr, Deleter d, Alloc alloc); shared_ptr能解决的问...
C++程序设计的一种常用技术——智能指针(smart pointer),主要内容包括引用计数(reference count)和句柄类(handle class)。当类中有指针成员时,一般有两种方式来管理指针成员:一是采用值型的方式管理,每个类对象都保留一份指针指向的对象的拷贝;另一种更优雅的方式是使用智能指针,从而实现指针指向的对象的共享。 智能...
使用普通指针,容易造成堆内存泄露(忘记释放),二次释放,程序发生异常时内存泄露等问题等,使用智能指针能更好的管理堆内存。 理解智能指针需要从下面三个层次: 从较浅的层面看,智能指针是利用了一种叫做RAII(资源获取即初始化)的技术对普通的指针进行封装,这使得智能指针实质是一个对象,行为表现的却像一个指针。 智...
智能指针实现原理 智能指针,里面的计数器何时会改变 智能指针和管理的对象分别在哪个区(智能指针本身在栈区,托管的资源在堆区,利用了栈对象超出生命周期后自动析构的特征,所以无需手动delete释放资源。 面向对象的特性:多态原理 介绍一下虚函数,虚函数怎么实现的 多态和继承在什么情况下使用 除了多态和继承还有什么面...
01.智能指针实现原理 1.智能指针是一个类 2.最常用的智能指针: 2.1 std::auto_ptr, 2.2 C++11引入的unique_ptr, 2.3 C++11或boost的shared_ptr, 2.4 C++11或boost的weak_ptr,弱引用。 3.智能指针的实现 02.智能指针,里面的计数器何时会改变 03.智能指针和管理的对象分别在哪个区(智能指针本身在栈区,托管...
被管理的类可能拥有一些特性使得它更应该与引用计数智能指针一起使用。例如,它的复制操作很昂贵,或者它所代表的有些东西必须被多个实例共享,这些特性都值得去共享所有权。还有一种情形是共享的资源没有一个明确的拥有者。使用引用计数智能指针可以在需要访问共享资源的对象之间共享资源的所有权。引用计数智能指针还让你...
其实,C++一共提供了四种智能指针:auto_ptr, unique_ptr,shared_ptr,weak_ptr。其中后三个是C++11新增的,第一个由C++98提出,已经被C++11弃用。智能指针都包含在memory库中,要使用智能指针必须包含这个库。 二、auto_ptr auto_ptr的原理是:将资源的管理权由一个对象转移给另外一个对象。但auto_ptr存在下面一些问...
说下你对智能指针的理解 因为C++使用内存的时候很容易出现野指针、悬空指针、内存泄露的问题。所以C++11引入了智能指针来管理内存。有四种: auto_ptr:已经不用了 unique_ptr:独占式指针,同一时刻只能有一个指针指向同一个对象 shared_ptr:共享式指针,同一时刻可以有多个指针指向同一个对象 ...
原理:智能指针是一个类,用来存储指向动态分配对象的指针,负责自动释放动态分配的对象,防止堆内存泄漏。动态分配的资源,交给一个类对象去管理,当类对象声明周期结束时,自动调用析构函数释放资源。 常用的智能指针 (1) shared_ptr 实现原理:采用引用计数器的方法,允许多个智能指针指向同一个对象,每当多一个指针指向该...