1.引进了一个计数器shared_count,用来表示当前有多少个智能指针对象共享指针指向的内存块 2.析构函数中不是直接释放指针对应的内存块,如果shared_count大于1则不释放内存只是将引用计数减1,只是计数等于1时释放内存 3.复制构造与赋值操作符只是提供一般意义上的复制功能,并且将引用计数加1. shared_ptr实现代码(只实...
是为了配合 shared_ptr 而引入的一种智能指针,它指向由 shared_ptr 管理的对象,但不影响对象的生命周期。通过 weak_ptr,我们可以解决 shared_ptr 的循环引用问题,避免内存泄漏。 通过shared_ptr 来创建,但不增加引用计数。当需要访问 weak_ptr 指向的对象时,可以通过 lock() 方法转换为 shared_ptr,如果转换成功,...
智能指针:用自动化或者说智能的指针来实现对动态内存的释放。它是一个类,有类似指针的功能。 常见的智能指针:auto_ptr/scoped_ptr/scoped_array/shared_ptr/shared_array,由于scoped_array和scoped_ptr比较类似,shared_array和shared_ptr又比较类似,所以我们只实现auto_ptr/scoped_ptr/shared_ptr。 一、auto_ptr 最...
4.weaked_ptr:到std::shared_ptr所管理对象的弱引用 1.1 weak_ptr 参考:https://zh.cppreference.com/w/cpp/memory/weak_ptr std::weak_ptr是一种智能指针,它对被std::shared_ptr管理的对象存在非拥有性(“弱”)引用。在访问所引用的对象前必须先转换为std::shared_ptr。 std::weak_ptr用来表达临时所有...
智能指针shared_ptr 引用计数原理实现 模拟实现简单计数的智能指针的实现
1、请你说说三种智能指针实现原理和使用场景,以及其线程安全 2、请你说说 unique_ptr 的实现原理及使用场景 3、请你说说单例设计模式 4、请你回答一下智能指针有没有内存泄露的情况 5、shared_ptr 怎么知道跟它共享对象的指针释放了 6、请你说说红黑树的特性,为什么要有红黑树 ...
说一下C++中如何实现多态的? 那你说的父类指针指向子类引用,解释一下底层是怎么实现的(为什么能找到子类对应的func)? 智能指针有用过吗,说一下他们的实现原理? shared_ptr的计数器底层是怎么实现的?(我不知道,面试官说没关系按照你自己的理解你会怎么设计,我就回答,用一个哈希表,存放资源地址和对应的指针) ...
下面我们来瞧瞧shared_ptr具体是咋实现的.相较auto_ptr有下面几个不同的地方: 1.引进了一个计数器shared_count,用来表示当前有多少个智能指针对象共享指针指向的内存块 2.析构函数中不是直接释放指针对应的内存块,如果shared_count大于1则不释放内存只是将引用计数减1,只是计数等于1时释放内存 ...