zl程序教程

智能指针

  • 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++智能指针「建议收藏」

    大家好,又见面了,我是你们的朋友全栈君。 文章目录一、基础知识介绍二、不带引用计数的智能指针auto_ptr、scoped_ptr、unique_ptr三、带引用计数的智能指针shared_ptr、weak_ptr四、多线程访问共享对象的线程安全问题五、自定义删除器一、基础知识介绍裸指针常出现以下几个问题:忘记释放资源,导致资源泄露(常发生内存泄漏问题)同一资源释放多次,导致释放野指针,程序崩

    日期 2023-06-12 10:48:40     
  • 【C++】简单实现C++11的三种智能指针

    【C++】简单实现C++11的三种智能指针

    绪本篇是尝试对C++11的三种智能指针(unique_ptr, shared_ptr, weak_ptr)进行的复现结果, 智能指针的复现在面试中经常考到, 需要好好熟悉.才疏学浅, 错漏在所难免, 尤其是智能指针想要全面实现的话属实困难, 各种bug也难以排查, 后续若有新的修改会总结为一篇更好的文章, 望多多包容. 全文4.8k字, 参考文献和相关资料在每一段的开头给出, 慢慢来吧.cppre

    日期 2023-06-12 10:48:40     
  • ue4 弱指针_智能指针如何实现自动释放

    ue4 弱指针_智能指针如何实现自动释放

    大家好,又见面了,我是你们的朋友全栈君。原创文章,转载请注明出处。UE4也有一套智能指针库,整理了一下做个介绍。也请大家做补充。文章里面的代码下载链接:智能指针测试代码 共享指针/共享引用/弱指针/注意事项一.TSharePtr1.如何创建一个TSharePtr2.TSharePtr如何进行类型转换1)TSharePtr转TSharePtr2)Const TSharePtr转TSharePtr3)

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

    C++智能指针

    目录1.为什么需要智能指针2.内存泄漏问题3.智能指针的使用以及原理1.为什么需要智能指针?下面结合抛异常的情况来看一个程序,看看这个程序中有没有内存方面的问题:#include<iostream> #include<memory> using namespace std; int div() { int a, b; cin >> a >> b

    日期 2023-06-12 10:48:40     
  • C++11 weak_ptr智能指针(一看即懂)

    C++11 weak_ptr智能指针(一看即懂)

    在 C++98/03 的基础上,C++11 标准新引入了 shared_ptr、unique_ptr 以及 weak_ptr 这 3 个智能指针。学习 weak_ptr 智能指针之前,您必须对对 shared_ptr 智能指针有一定的了解,可阅读《C++11 shared_ptr智能指针》一节做系统地学习。  关于 unique_ptr 指针,读者可阅读《C++11 unique_pt

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

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

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

    日期 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     
  • Open3D (C++) 非智能指针转智能指针

    Open3D (C++) 非智能指针转智能指针

    目录 一、概述 二、代码实现 三、结果展示 一、概述   Open3D中大量使用的智能指针为shared_ptr。shared_ptr的作用有如同指针,但会记录有多少个shared

    日期 2023-06-12 10:48:40     
  • android 智能指针

    android 智能指针

    日期 2023-06-12 10:48:40     
  • Qt 中的智能指针

    Qt 中的智能指针

    Qt 的智能指针包括: QSharedPointerQScopedPointerQScopedArrayPointerQPointerQSharedDataPointerQWeakPointer QSharedPointer QSharedPointer 大体相当于C++11 标准中的 shared_ptr。是在 Qt

    日期 2023-06-12 10:48:40     
  • Qt 智能指针QPointer, QSharedDataPointer ,QSharedPointer,QWeakPointer和QScopedPointer

    Qt 智能指针QPointer, QSharedDataPointer ,QSharedPointer,QWeakPointer和QScopedPointer

    QPointer (4.0) 已经过时,可以被QWeakPointer所替代,它不是线程安全的。 QSharedDataPointer (4.0) – 提供对数据的COPY-ON-WRITE以及

    日期 2023-06-12 10:48:40     
  • Qt 智能指针学习

    Qt 智能指针学习

    从内存泄露开始? 很简单的入门程序,应该比较熟悉吧 _ #include <QApplication> #include <QLabel> int main(int a

    日期 2023-06-12 10:48:40     
  • QPointer智能指针

    QPointer智能指针

    QList<QPointer<QWidget> > alist; QList<QPointer<QWidget> > blist; QPointer<QWidget&

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

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

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

    日期 2023-06-12 10:48:40     
  • Android系统之仿sp智能指针实例(一百三十六)

    Android系统之仿sp智能指针实例(一百三十六)

    目录 1.仿sp实例  2.其实本质是普通类继承模板类的一个例子。参考之前写过的一篇,帮助理解。 3.程序例子01 4.程序例子02 1.仿sp实例  为了便于理解Android智能指针模板类make()创建的过程,写了一个仿智能指针的一个例子,方便初学者理解。 2.其实本质是普通类继承模板类

    日期 2023-06-12 10:48:40     
  • boost库在工作(7)使用数组智能指针scoped_array

    boost库在工作(7)使用数组智能指针scoped_array

    学习过C++的开发人员,都知道在C++里数组指针与一般的指针是有区别的。比如使用数组形式分配的内存,就需要使用数组的形式删除。但初学开发的开发人员,往往会忘记这点,在我过去10多年的软件代码审查过程里,经常发现这点,如下面所示:

    日期 2023-06-12 10:48:40     
  • boost库在工作(2)作用域智能指针scoped_ptr之一

    boost库在工作(2)作用域智能指针scoped_ptr之一

    很久远以前,丹尼斯.里奇发明了C语言,这个语言有一个优点,就是可以动态地分配内存。当需要使用内存时,就可以立即向系统申请。当不需要时,又可以立即释放回给系统,再给别的程序使用。这种动态的内存管理,使得当时以K计算的内存时代,也可以处理很大数据量的

    日期 2023-06-12 10:48:40     
  • boost库在工作(11)引用计数的智能指针weak_ptr

    boost库在工作(11)引用计数的智能指针weak_ptr

    由于boost库里的shared_ptr采用引用计数的技术,这个技术天生就存在一个缺陷,就是不能存在循环引用的情况,因为这个缺点,引用计数的技术一直没有用到垃圾回收的算法里。既然存在这方面的问题,作为C++强大的boost库,一定会想办法解决的。因此

    日期 2023-06-12 10:48:40     
  • 智能指针的循环引用问题

    智能指针的循环引用问题

    转自:https://blog.csdn.net/weixin_43796685/article/details/104297360,讲的太明白了 1.图解    每一个smart_ptr都有两个数据成员,都是指针类型,一个是指向数据,另一个是引用计数。 上图举的例子是针对双向链表,每个节点Node都有一个next同样是smart_ptr去指向下一个节点,这样会导致下一个结

    日期 2023-06-12 10:48:40     
  • [4] 智能指针boost::scoped_ptr

    [4] 智能指针boost::scoped_ptr

    【1】boost::scoped_ptr简介 boost::scoped_ptr属于boost库,定义在namespace boost中,包含头文件#include <boost/scoped_ptr.hpp>便可以使用。 一句话:一个作用域指针(即所谓智能指针scoped_ptr对象)独享一个动态分配的内存对象管理所有权。 【2】boost::scoped_ptr与stl::aut

    日期 2023-06-12 10:48:40     
  • [3] 智能指针std::auto_ptr

    [3] 智能指针std::auto_ptr

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

    日期 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 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++智能指针的原理和实现

    C++智能指针的原理和实现

    一、智能指针起因   在C++中,动态内存的管理是由程序员自己申请和释放的,用一对运算符完成:new和delete。   new:在动态内存中为对象分配一块空间并返回一个指向该对象的指针;   delete:指向一个动态独享的指针,销毁对象,并释放与之关联的内存。   使用堆内存是非常频繁的操作,容易造成堆内存泄露、二次释放等问题,为了更加容易和更加安全的使用动态内存,C++11中引入了智能指针

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

    C++智能指针

    c++11的三个智能指针 unique_ptr独占指针,用的最多 shared_ptr记数指针,其次 weak_ptr,shared_ptr的补充,很少

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

    C++智能指针unique_ptr

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

    日期 2023-06-12 10:48:40     
  • 再探 智能指针

    再探 智能指针

    使用任何一项工具,都需要承担代价与风险的。 1、一个裸的指针不要用两个shared_ptr管理,unique_ptr也是,它们都会认为自己独占这个资源,

    日期 2023-06-12 10:48:40     
  • C++编程经验(9):智能指针 -- 裸指针管得了的我要管,裸指针管不了的我更要管!

    C++编程经验(9):智能指针 -- 裸指针管得了的我要管,裸指针管不了的我更要管!

    文章目录 智能指针介绍手写智能指针不带引用计数的智能指针 升级手写的智能指针智能指针的循环引用问题强智能指针弱智能指针弱智能指针升级为强智能指针 多线程访问共享对象 智能指针

    日期 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     
  • 智能指针(四):unique_ptr浅析

    智能指针(四):unique_ptr浅析

    前言 unique_ptr这个指针是C++11标准时被引入标准库的,有一种说法称它是boost::scoped_ptr的一个分身,并且它在C++11的时候“转正”

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