C++11--智能指针shared_ptr,weak_ptr,unique_ptr
共享指针 shared_ptr/*********** Shared_ptr ***********/// 为什么要使用智能指针,直接使用裸指针经常会出现以下情况// 1. 当指针的生命长于所指的资源:野指针// 2. 当指针的生命短于所指的资源:资源泄漏//// 智能指针: 确保指针和资源的生命周...
STL源码剖析-智能指针shared_ptr源码
目录一、 引言二、 代码实现 2.1 模拟实现shared_ptr2.2 测试用例三、 潜在问题分析 你可能还需要了解模拟实现C++标准库中的auto_ptr一、 引言与auto_ptr大同小异,shared_ptr也是一个类。可以实现多个指针指向同一个对象(引用计数)。发生拷贝的话都指向相同的内存...
浅谈C++的智能指针
我们使用智能指针来自动运行管理内存,避免对原始指针的使用不当而造成内存泄漏。----------------------------------------------------------------------------------------------------------------...
[3] 智能指针std::auto_ptr
【1】std::auto_ptr对于编译器来说,智能指针实质是一个栈对象,而并非指针类型。智能指针通过构造函数获取堆内存的管理所有权,而在其生命期结束时,再通过析构函数释放由它所管理的堆内存。所有智能指针都重载了“operator->”操作符,直接返回对象的引用,用以操作对象。访问智能指针原来...
C++11 weak_ptr智能指针
和 shared_ptr、unique_ptr 类型指针一样,weak_ptr 智能指针也是以模板类的方式实现的。weak_ptr<T>( T 为指针所指数据的类型)定义在<memory>头文件,并位于 std 命名空间中。因此,要想使用 weak_ptr 类型指针,程序中应...
shared_ptr智能指针源码剖析
(shared_ptr)的引用计数本身是安全且无锁的,但对象的读写则不是,因为 shared_ptr 有两个数据成员,读写操作不能原子化。根据文档(http://www.boost.org/doc/libs/release/libs/smart_ptr/shared_ptr.htm#ThreadSa...
智能指针(一):STL auto_ptr实现原理
智能指针实际上是一个类(class),里面封装了一个指针.它的用处是啥呢?指针与内存说到指针自然涉及到内存.我们如果是在堆栈(stack)中分配了内存,用完后由系统去负责释放.如果是自定义类型,就会自动的去调用你的析构函数.但如果是在堆(heap)中分配了内存,也就是用malloc或者new.那只能...
C++智能指针与类继承多态
我在做编译器项目的时候, 我们采用c++语言,但要使用多态的性质,一是用引用,二是用指针。可是引用不够灵活,指针还具有内存管理问题。所以SmartPtr是一个必然的选择,可我发现通常的SmartPtr不能够支持多态,原因是编译器只能进行一次类型转换,如SmartPtr->裸指针,但裸指针到他的...
c++自定义智能指针和string类
main.cpp #include "MyString.h"//智能指针的意义是你new一个空间,是指针指向这个空间,不用在调用delete去回收指针指向的空间,系统会自己帮我们回收int main(){ //一般指针开辟空间 int *p = new int; //智能指针开辟空...
当不再有引用时,如何从缓存中删除智能指针?
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...
智能指针。何时,何地以及如何?
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...
指针,智能指针还是共享指针?(复制)
This question already has an answer here: 这个问题已经有了答案: What is a smart pointer and when should I use one? 14 answers 什么是智能指针?何时使用?14个答案 I a...
C++进阶(智能指针)
C++程序设计中使用堆内存是非常频繁的操作,堆内存的申请和释放都由程序员自己管理。程序员自己管理堆内存可以提高了程序的效率,但是整体来说堆内存的管理是麻烦的,C++11中引入了智能指针的概念,方便管理堆内存。使用普通指针,容易造成堆内存泄露(忘记释放),二次释放,程序发生异常时内存泄露等问题等,使用...
Effective C++(17) 以独立语句将newed对象置入智能指针
问题聚焦: 使用了资源管理对象(如智能指针),就一定是安全的吗?显然不是。 资源泄露发生可能在于,在“资源被创建”和“资源被转换为资源管理对象”两个时间点之间有可能发生异常干扰。看下面这个例子://函数说明int priority(); //揭示处理程序的优先权void proce...
智能指针shared_ptr新特性shared_from_this及weak_ptr
enable_shared_from_this是一个模板类,定义于头文件<memory>,其原型为:template< class T > class enable_shared_from_this; std::enable_shared_from_this 能让...
智能指针shared_ptr
// 智能指针会自动释放所指向的对象。// shared_ptr的应用场景是:程序需要在多个对象间共享数据/* 先从应用场景入手吧,说矿工A发现了一个金矿。 * 然后矿工A喊来了矿工B,一起开采,不久后矿工A劳累过度死了。 * 矿工B继续开采着矿工A发现的金矿。 * 但是矿工B不久后得了尘肺病。 *...
C++智能指针shared_ptr
shared_ptr这里有一个你在标准库中找不到的—引用数智能指针。大部分人都应当有过使用智能指针的经历,并且已经有很多关于引用数的文章。最重要的一个细节是引用数是如何被执行的—插入,意思是说你将引用计数的功能添加给类,或者是非插入,意思是说你不这样做。Boost shared_ptr是非插入类型的...
c/c++ 智能指针 shared_ptr 和 new结合使用
智能指针 shared_ptr 和 new结合使用用make_shared函数初始化shared_ptr是最推荐的,但有的时候还是需要用new关键字来初始化shared_ptr。一,先来个表格,唠唠new和shared_ptr操作功能描述shared_ptr<T> p(q)智能指针p管理...
[6] 智能指针boost::weak_ptr
【1】boost::weak_ptr简介boost::weak_ptr属于boost库,定义在namespace boost中,包含头文件 #include<boost/weak_ptr.hpp>便可以使用。【2】boost::weak_ptr详解智能指针boost::scope_ptr...
Qt智能指针简明说明
下面的智能指针分别对应boost库,Qt库,c++11的智能指针boost::scoped_ptr QScopedPointer unique_ptr 在其生命期结束后会自动删除它所指的对象(确定无需共享)boost::shared_ptr QSharedPointer shared_ptr 引用