• C++11--智能指针shared_ptr,weak_ptr,unique_ptr

    时间:2023-12-03 13:46:24

    共享指针 shared_ptr/*********** Shared_ptr ***********/// 为什么要使用智能指针,直接使用裸指针经常会出现以下情况// 1. 当指针的生命长于所指的资源:野指针// 2. 当指针的生命短于所指的资源:资源泄漏//// 智能指针: 确保指针和资源的生命周...

  • STL源码剖析-智能指针shared_ptr源码

    时间:2023-12-03 13:10:35

    目录一、 引言二、 代码实现 2.1 模拟实现shared_ptr2.2 测试用例三、 潜在问题分析 你可能还需要了解模拟实现C++标准库中的auto_ptr一、 引言与auto_ptr大同小异,shared_ptr也是一个类。可以实现多个指针指向同一个对象(引用计数)。发生拷贝的话都指向相同的内存...

  • 浅谈C++的智能指针

    时间:2023-12-01 13:52:12

    我们使用智能指针来自动运行管理内存,避免对原始指针的使用不当而造成内存泄漏。----------------------------------------------------------------------------------------------------------------...

  • [3] 智能指针std::auto_ptr

    时间:2023-02-15 16:17:51

    【1】std::auto_ptr对于编译器来说,智能指针实质是一个栈对象,而并非指针类型。智能指针通过构造函数获取堆内存的管理所有权,而在其生命期结束时,再通过析构函数释放由它所管理的堆内存。所有智能指针都重载了“operator->”操作符,直接返回对象的引用,用以操作对象。访问智能指针原来...

  • C++11 weak_ptr智能指针

    时间:2023-01-31 16:25:20

    和 shared_ptr、unique_ptr 类型指针一样,weak_ptr 智能指针也是以模板类的方式实现的。weak_ptr<T>( T 为指针所指数据的类型)定义在<memory>头文件,并位于 std 命名空间中。因此,要想使用 weak_ptr 类型指针,程序中应...

  • shared_ptr智能指针源码剖析

    时间:2023-01-31 16:25:14

    (shared_ptr)的引用计数本身是安全且无锁的,但对象的读写则不是,因为 shared_ptr 有两个数据成员,读写操作不能原子化。根据文档(http://www.boost.org/doc/libs/release/libs/smart_ptr/shared_ptr.htm#ThreadSa...

  • 智能指针(一):STL auto_ptr实现原理

    时间:2023-01-15 18:27:57

    智能指针实际上是一个类(class),里面封装了一个指针.它的用处是啥呢?指针与内存说到指针自然涉及到内存.我们如果是在堆栈(stack)中分配了内存,用完后由系统去负责释放.如果是自定义类型,就会自动的去调用你的析构函数.但如果是在堆(heap)中分配了内存,也就是用malloc或者new.那只能...

  • C++智能指针与类继承多态

    时间:2023-01-12 21:58:00

    我在做编译器项目的时候, 我们采用c++语言,但要使用多态的性质,一是用引用,二是用指针。可是引用不够灵活,指针还具有内存管理问题。所以SmartPtr是一个必然的选择,可我发现通常的SmartPtr不能够支持多态,原因是编译器只能进行一次类型转换,如SmartPtr->裸指针,但裸指针到他的...

  • c++自定义智能指针和string类

    时间:2023-01-06 16:41:23

    main.cpp #include "MyString.h"//智能指针的意义是你new一个空间,是指针指向这个空间,不用在调用delete去回收指针指向的空间,系统会自己帮我们回收int main(){    //一般指针开辟空间    int *p = new int;    //智能指针开辟空...

  • 当不再有引用时,如何从缓存中删除智能指针?

    时间:2023-01-05 21:17:56

    I've been trying to use smart pointers to upgrade an existing app, and I'm trying to overcome a puzzle. In my app I have a cache of objects, for examp...

  • 智能指针。何时,何地以及如何?

    时间:2023-01-05 21:17:50

    First off, since there are different kinds of smart pointers, I'd like to focus this question on two of them: reference counted intrusive and non-intr...

  • 指针,智能指针还是共享指针?(复制)

    时间:2023-01-05 21:17:44

    This question already has an answer here: 这个问题已经有了答案: What is a smart pointer and when should I use one? 14 answers 什么是智能指针?何时使用?14个答案 I a...

  • C++进阶(智能指针)

    时间:2023-01-03 17:11:46

    C++程序设计中使用堆内存是非常频繁的操作,堆内存的申请和释放都由程序员自己管理。程序员自己管理堆内存可以提高了程序的效率,但是整体来说堆内存的管理是麻烦的,C++11中引入了智能指针的概念,方便管理堆内存。使用普通指针,容易造成堆内存泄露(忘记释放),二次释放,程序发生异常时内存泄露等问题等,使用...

  • Effective C++(17) 以独立语句将newed对象置入智能指针

    时间:2022-12-26 10:08:51

    问题聚焦:    使用了资源管理对象(如智能指针),就一定是安全的吗?显然不是。    资源泄露发生可能在于,在“资源被创建”和“资源被转换为资源管理对象”两个时间点之间有可能发生异常干扰。看下面这个例子://函数说明int priority(); //揭示处理程序的优先权void proce...

  • 智能指针shared_ptr新特性shared_from_this及weak_ptr

    时间:2022-12-24 18:29:45

    enable_shared_from_this是一个模板类,定义于头文件<memory>,其原型为:template< class T > class enable_shared_from_this;       std::enable_shared_from_this 能让...

  • 智能指针shared_ptr

    时间:2022-12-24 18:10:18

    // 智能指针会自动释放所指向的对象。// shared_ptr的应用场景是:程序需要在多个对象间共享数据/* 先从应用场景入手吧,说矿工A发现了一个金矿。 * 然后矿工A喊来了矿工B,一起开采,不久后矿工A劳累过度死了。 * 矿工B继续开采着矿工A发现的金矿。 * 但是矿工B不久后得了尘肺病。 *...

  • C++智能指针shared_ptr

    时间:2022-12-24 18:07:21

    shared_ptr这里有一个你在标准库中找不到的—引用数智能指针。大部分人都应当有过使用智能指针的经历,并且已经有很多关于引用数的文章。最重要的一个细节是引用数是如何被执行的—插入,意思是说你将引用计数的功能添加给类,或者是非插入,意思是说你不这样做。Boost shared_ptr是非插入类型的...

  • c/c++ 智能指针 shared_ptr 和 new结合使用

    时间:2022-12-24 18:06:09

    智能指针 shared_ptr 和 new结合使用用make_shared函数初始化shared_ptr是最推荐的,但有的时候还是需要用new关键字来初始化shared_ptr。一,先来个表格,唠唠new和shared_ptr操作功能描述shared_ptr<T> p(q)智能指针p管理...

  • [6] 智能指针boost::weak_ptr

    时间:2022-12-13 15:39:15

    【1】boost::weak_ptr简介boost::weak_ptr属于boost库,定义在namespace boost中,包含头文件 #include<boost/weak_ptr.hpp>便可以使用。【2】boost::weak_ptr详解智能指针boost::scope_ptr...

  • Qt智能指针简明说明

    时间:2022-12-09 08:48:38

    下面的智能指针分别对应boost库,Qt库,c++11的智能指针boost::scoped_ptr  QScopedPointer unique_ptr 在其生命期结束后会自动删除它所指的对象(确定无需共享)boost::shared_ptr QSharedPointer shared_ptr 引用