C++智能指针 精炼总结

智能指针作用:避免程序员申请空间后忘记释放造成内存泄漏 

实现原理:智能指针是一个类 当超出类的作用域时 类会自动调用析构函数,从而自动释放资源。

智能指针类型:

1.auto_ptr:(C++98方法 C++11已抛弃) 存在潜在内存崩溃问题

2.unique_ptr:独占式 同一时间只允许一个智能指针可以指向一个对象。 可有效避免内存泄漏

3.shared_ptr:共享式 可有多个共享指针同时指向一个对象,采用引用计数的方式计数记录被几个指针共享,当共享指针被释放时,计数-1,直到0后被指向的对象和资源被释放。

        usr_count() 查看所有者个数; release() 计数-1

4.weak_ptr:弱引用 指向共享指针指向的对象,不控制对象生命周期,构造或者析构不会影响计数

       目的: 主要为了解决 shared_ptr的环形依赖时的死锁问题。将其中一个shared_ptr改为weak_ptr即可解决

        环形依赖:两个shared_ptr相互引用,那么这两个指针的引用计数永远不会下降为0,因此资源永远不会被释放

你可能感兴趣的:(C++面经总结,c++,开发语言)