zl程序教程

C/C++智能指针详解

  • 【C++】智能指针详解

    【C++】智能指针详解

    大家好,又见面了,我是你们的朋友全栈君。 参考资料:《C++ Primer中文版 第五版》 我们知道除了静态内存和栈内存外,每个程序还有一个内存池,这部分内存被称为自由空间或者堆。程序用堆来存储动态分配的对象即那些在程序运行时分配的对象,当动态对象不再使用时,我们的代码必须显式的销毁它们。在C++中,动态内存的管理是用一对运算符完成的:new和delete,new:在动态内存中为对象分配一块

    日期 2023-06-12 10:48:40     
  • C++智能指针详解(共享指针,唯一指针,自动指针)

    C++智能指针详解(共享指针,唯一指针,自动指针)

    前言:智能指针在C++11中引入,分为三类:shared_ptr:共享指针unique_ptr:唯一指针auto_ptr:自动指针一、共享指针几个共享指针可以指向同一个对象; 每当shared_ptr的最后一个所有者被销毁时,关联对象或关联资源就会被删除1. 创建方式:shared_ptr<string> pPoint{new string("pointer")}

    日期 2023-06-12 10:48:40     
  • C++11 unique_ptr智能指针详解

    C++11 unique_ptr智能指针详解

    C++ 标准提供了 3 种智能指针,分别是 shared_ptr、unique_ptr 和 weak_ptr,本节我们给大家讲解 unique_ptr 智能指针的特性和用法。 关于 shared_ptr 智能指针,可以阅读《C++11 shared_ptr智能指针》一节;关于 weak_ptr 智能指针,可以阅读《C++11 weak_ptr智能指针》一节。 作为智能指针的一种,unique_

    日期 2023-06-12 10:48:40     
  • C++11 shared_ptr(智能指针)详解

    C++11 shared_ptr(智能指针)详解

    要确保用 new 动态分配的内存空间在程序的各条执行路径都能被释放是一件麻烦的事情。C++ 11 模板库的 memory 头文件中定义的智能指针,即 shared _ptr 模板,就是用来部分解决这个问题的。 只要将 new 运算符返回的指针 p 交给一个 shared_ptr 对象 托管 ,就不必担心在哪里写delete p语句 实际上根本不需要编写这条语句,托管 p 的 shared_ptr

    日期 2023-06-12 10:48:40     
  • C++序列容器存储智能指针详解

    C++序列容器存储智能指针详解

    通常用容器保存指针比保存对象更好,而且大多数时候,保存智能指针比原生指针好。下面是一些原因: 在容器中保存指针可以得到多态性。存放元素基类指针的容器也可以保存其派生类型的指针。当要处理有共同基类的任意对象序列时,这种功能是非常有用的。应用这一特性的一个常见示例是展示一个含有直线、曲线和几何形状的对象序列。 对指针容器的内容进行排序的速度要比对对象排序快;因为只需要移动指针,不需要移动对象。

    日期 2023-06-12 10:48:40     
  • C++优先级队列存储智能指针详解

    C++优先级队列存储智能指针详解

    现在主要讲解智能指针的使用。这和原生指针在本质上是相同的,除非想要自己负责删除它们所指向的对象。当生成优先级队列或堆时,需要一个顺序关系来确定元素的顺序。当它们保存的是原生指针或智能指针时,总是需要为它们提供一个比较函数;如果不提供,就会对它们所保存的指针而不是指针所指向的对象进行比较,这肯定不是我们所希望的。 让我们考虑一下,如何定义一个保存指针的 priority_queue,指针则指向自由

    日期 2023-06-12 10:48:40     
  • C++ set保存指针(智能指针)详解

    C++ set保存指针(智能指针)详解

    如果改变对象,可能会改变 set 中对象指针的顺序,所以指针的比较函数不能和对象有关。大多数时候,我们并不在意元素在 set 中的顺序,而是在意容器中是否有这个元素。在这种情况下,就可以使用一个适用于指针但和它们所指向的元素无关的比较函数对象,推荐使用定义在 memory 头文件中的 owner_less T 函数对象类型的实例来比较容器中的智能指针。 owner_less T 模板为 shar

    日期 2023-06-12 10:48:40     
  • C++智能指针unique_ptr详解

    C++智能指针unique_ptr详解

    在一个大型程序中,指向动态分配内存的指针可能会在程序的各个部分使用。在这种情况下,确定哪些内存不再需要,或者程序的哪个部分应该负责删除指针就变得比较困难。 程序可能会因此出现悬挂指针,也就是说,指针已经被删除了,但其内存仍然在使用中;还可能出现内存泄漏,也就是说,即使已经不再需要内存了,但指针仍然未被删除。另外还有双重删除的问题,当程序的某 部分要删除一个已经被删除的指针时,即可出现这种情况。如

    日期 2023-06-12 10:48:40     
  • C++ share_ptr智能指针使用详解

    C++ share_ptr智能指针使用详解

    share_ptr 智能指针,也被称为共享指针,用于管理可以由多个智能指针共同拥有的动态分配对象。特别是,类型 shared_ptr T 用于管理 T 类型对象的所有权。 类构造函数 shared_ptr T (T * ptr) 可用于创建共享指针,管理由裸指针 ptr 给定地址的对象。shared_ptr 类可以重载指针运算符 * 和 - 。以下示例创建了一个由共享指针管理的动态分配整数,然后

    日期 2023-06-12 10:48:40     
  • C++智能指针实例详解

    C++智能指针实例详解

    本文通过实例详细阐述了C++关于智能指针的概念及用法,有助于读者加深对智能指针的理解。详情如下: 一、简介 由于C++语言没有自动内存回收机制,程序员每次new出来的内存都要手动delete。程序员忘记delete,流程太复杂,最终导致没有delete,异常导致程序过早退出,没有执行delete的情况并不罕见。 用智能指针便可以有效缓解这类问题,本文主要讲解参见的智能指针的用法。包括:std::

    日期 2023-06-12 10:48:40     
  • C++ 智能指针详解

    C++ 智能指针详解

    原文链接:  https://blog.csdn.net/flowing_wind/article/details/81301001 参考资料:《C++ Primer中文版 第五版》   我们知道除了静态内存和栈内存外,每个程序还有一个内存池,这部分内存被称为自由空间或者堆。 程序用堆来存储动态分配的对象即那些在程序运行时分配的对象,当动态对象不再使用时

    日期 2023-06-12 10:48:40     
  • C++11 unique_ptr智能指针详解

    C++11 unique_ptr智能指针详解

    在《C++11 shared_ptr智能指针》的基础上,本节继续讲解 C++11 标准提供的另一种智能指针,即 unique_ptr 智能指针。 作为智能指针的一种,unique_ptr 指针自然也具备“在适当时机自动释放堆内存空间”的能力。和 shared_ptr 指针最大的不同之处在于,unique_ptr 指针指向的堆内存无法同其它 unique_ptr 共享,也就是说,每个 uniq

    日期 2023-06-12 10:48:40     
  • C++11 shared_ptr(智能指针)详解

    C++11 shared_ptr(智能指针)详解

    要确保用 new 动态分配的内存空间在程序的各条执行路径都能被释放是一件麻烦的事情。C++ 11 模板库的 <memory> 头文件中定义的智能指针,即 shared _ptr 模板,就是用来部分解决这个问题的。只要将 new 运算符返回的指针 p 交给一个 shared_ptr 对象“托管”,就不必担心在哪里写delete p语句——实际上根本不需要编写这条语句,托管 p

    日期 2023-06-12 10:48:40     
  • C++11 unique_ptr智能指针详解

    C++11 unique_ptr智能指针详解

    在《C++11 shared_ptr智能指针》的基础上,本节继续讲解 C++11 标准提供的另一种智能指针,即 unique_ptr 智能指针。 作为智能指针的一种,unique_ptr 指针自然也具备“在适当时机自动释放堆内存空间”的能力。和 shared_ptr 指针最大的不同之处在于,unique_ptr 指针指向的堆内存无法同其它 unique_ptr 共享,也就是说,每个 uniq

    日期 2023-06-12 10:48:40     
  • C++ 智能指针详解

    C++ 智能指针详解

      参考:http://blog.csdn.net/xt_xiaotian/article/details/5714477 这篇博客主要参考上面这个博客和 《Boost 程序库完全开发指南:深入 C++ 准标准库 》 第三版      一个智能指针就是一个C++的对象,这个对象的行为像一个指针,但是它却可

    日期 2023-06-12 10:48:40     
  • C++ 智能指针详解

    C++ 智能指针详解

    智能指针内容很多,重点是基本用法。 #include <boost/shared_ptr.hpp>class CBase: public boost::enable_shared_from_this<CBase> {public:virtual void f(){}//必须有个虚函数才能向上向下转换

    日期 2023-06-12 10:48:40     
  • C/C++智能指针详解

    C/C++智能指针详解

    系列文章目录 文章目录 系列文章目录前言一、什么是智能指针?二、使用方法1.shared_ptr2.unique_ptr3.weak_ptr 前言 对C/C+

    日期 2023-06-12 10:48:40