zl程序教程

C++ 11 智能指针

  • Effective C++第17条:要在单独的语句中使用智能指针来存储由new创建的对象

    Effective C++第17条:要在单独的语句中使用智能指针来存储由new创建的对象

    第17条: 要在单独的语句中使用智能指针来存储由new创建的对象 假设这里有一个函数用来显示处理优先级,另一个函数根据当前优先级为一个动态分配的 Widget 做一些处理: int priority(); void processWidget(std::tr1::shared_ptr<Widget> pw, int priority); 一定要时刻记住“使用对象管理资源”这一真理(参

    日期 2023-06-12 10:48:40     
  • 彻底搞懂之C++智能指针

    彻底搞懂之C++智能指针

    前言在现代 c + + 编程中,标准库包含 智能指针,这些指针用于帮助确保程序不会出现内存和资源泄漏,并具有异常安全。标准库智能指针分类auto_ptr, shared_ptr, weak_ptr, unique_ptr 其中后三个是c++11支持,并且第一个已经被c++11弃用。所以我只说后3个。shared_ptr 采用引用计数的智能指针。 如果你想要将一个原始指针分配给多个所有者(例如,从容

    日期 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++序列容器存储智能指针详解

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

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

    日期 2023-06-12 10:48:40     
  • 浅谈C++ auto_ptr智能指针

    浅谈C++ auto_ptr智能指针

    STL 还提供了另一个模板类:auto_ptr 类。该类主要用于管理动态内存分配。 如果使用 new() 函数分配堆中的内存,而又不记得回收这部分内存,会导致内存泄漏。因此必须使用 delete 语句释放该内存块。即使在函数末端添加了 delete 语句释放内存,还需要在任何跳出该函数的语句(如抛出异常)之前添加释放内存的处理,例如 goto 语句和 throw 语句。 auto_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++学院】0904-boost智能指针/boost多线程锁定/哈希库/正则表达式

    【C/C++学院】0904-boost智能指针/boost多线程锁定/哈希库/正则表达式

    //for_each(myv.begin(), myv.end(), bind1st(add(),10)); for_each(myv.begin(), myv.end(), bind(add, 13, _1)); //bind设置默认参数调用,函数副本机制,不能拷贝构造 cin.get(); } Fun.cpp #include iostream #include str

    日期 2023-06-12 10:48:40     
  • C++中智能指针的设计和使用

    C++中智能指针的设计和使用

    智能指针(smart pointer)是存储指向动态分配(堆)对象指针的类,用于生存期控制,可以确保自己主动正确的销毁动态分配的对象,防止内存泄露。它的一种通用实现技术是使用引用计数(reference count)。智能指针类将一个计数器与类指向的对象相关联,引用计数跟踪该类有多少个对象共享同一指针。每次创建类的新对象时。初始化指针并将引用计数置为1;当对象作为还有一对象的副本而创建时。拷

    日期 2023-06-12 10:48:40     
  • C++之普通指针与智能指针相互转换(一百零六)

    C++之普通指针与智能指针相互转换(一百零六)

    1.代码示例   #include <iostream> #include <memory> #include <boost/smart_ptr.hpp> #include <boost/make_shared.hpp> class Student{ public: Student(int d) :

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

    C++11 weak_ptr智能指针

    和 shared_ptr、unique_ptr 类型指针一样,weak_ptr 智能指针也是以模板类的方式实现的。weak_ptr<T>( T 为指针所指数据的类型)定义在<memory>头文件,并位于 std 命名空间中。因此,要想使用 weak_ptr 类型指针,程序中应首先包含如下 2 条语句: #include <memory> using nam

    日期 2023-06-12 10:48:40     
  • C++11中智能指针的原理、使用、实现

    C++11中智能指针的原理、使用、实现

     目录 理解智能指针的原理 智能指针的使用 智能指针的设计和实现 1.智能指针的作用        C++程序设计中使用堆内存是非常频繁的操作,堆内存的申请和释放都由程序员自己管理。程序员自己管理堆内存可以提高了程序的效率,但是整体来说堆内存的管理是麻烦的,C++11中引入了智能指针的概念,方便管理堆内存

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

    C++智能指针weak_ptr

    C++智能指针weak_ptr 学习路线:C++智能指针shared_ptr->C++智能指针unique_ptr->C++智能指针

    日期 2023-06-12 10:48:40     
  • 使用C++智能指针的树结构的问题

    使用C++智能指针的树结构的问题

    现在C++17版本里,基本上都是使用智能指针了。 在std::shared_ptr被引入之前,C++标准库中实现的用于管理资源的智能指针只有std::auto_ptr一个而已。std::auto_ptr的作用非常有限,因为它存在被管理资源的所有权转移问题。这导致多个std::auto_ptr类型的局部变量不能共享同一个资源,这个问题是非常严重的。因为

    日期 2023-06-12 10:48:40     
  • 【C++智能指针 auto_ptr】

    【C++智能指针 auto_ptr】

    《More Effective C++》ITEM M9他提到auto_ptr。说是当异常产生的时候。怎么释放为对象分配的堆内存,避免反复编写内存释放语句。 PS:这里书里面提到函数退出问题,函数退出会清理栈内存,无论是怎么正常退出还是异常退出(仅有一种例外就是当你调用 longjmp 时。Longjmp 的这个缺点是 C++领先支持异常处理的主要原因)。建立在此基础上我们才把对指针的删除操作

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

    C++智能指针原理

    简介 智能指针就是对指针进行封装,使其提供特有的功能。 unique_ptr:封装了原始指针使其只能在同一时刻被同一对象拥有,并且在离开作用域时会自动销毁。 shared_ptr: 封装了原始指针,利用引用技术技术,实现多个对象同时共享一个指针,并且在所有对象都离开作用域时释放内存. weak_ptr : 用来解决shared_ptr带来的循环计数问题,而且weak_ptr中的lock函数保证是

    日期 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     
  • C++11 shared_ptr共享智能指针

    C++11 shared_ptr共享智能指针

    前言 std::shared_ptr使用引用计数,每一个shared_ptr的拷贝都指向相同的内存。在最后一个shared_ptr析构的时候,内存才会释放。 1. shared_ptr基本使用方法 1.1 初始化 #include <memory> //智能指针初始化 std::shared_ptr&l

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