std::shared_ptr 和 std::weak_ptr的用法以及引用计数的循环引用问题
在std::shared_ptr被引入之前,C++标准库中实现的用于管理资源的智能指针只有std::auto_ptr一个而已。std::auto_ptr的作用非常有限,因为它存在被管理资源的所有权转移问题。这导致多个std::auto_ptr类型的局部变量不能共享同一个资源,这个问题是非常严重的哦。...
[3] 智能指针std::auto_ptr
【1】std::auto_ptr对于编译器来说,智能指针实质是一个栈对象,而并非指针类型。智能指针通过构造函数获取堆内存的管理所有权,而在其生命期结束时,再通过析构函数释放由它所管理的堆内存。所有智能指针都重载了“operator->”操作符,直接返回对象的引用,用以操作对象。访问智能指针原来...
test dword ptr [eax],eax ; probe page. visual studio
当在函数中申请占用空间很大的数组、结构体时,会产生该问题。由于局部变量的申请空间存放于栈中,windows里默认栈内存是1M所以当申请空间大于1M时就会出现溢出错误通过debug就会进入以下文件chkask.asmchkstk.asm - C stack checking routine解决方法:扩...
C++11 shared_ptr, weak_ptr速成,以及放在stl集合类里面的注意点。
shared_ptr的初始化 shared_ptr<int> a(new int(6)); shared_ptr的操作 shared_ptr<A> a = A::create();a.get(); 得到 A*a.reset(); 不再引用A*shared_ptr&l...
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.那只能...
如何将BOOST_FOREACH与boost :: ptr_map一起使用?
How can I use BOOST_FOREACH efficiently (number-of-character/readability-wise) with a boost::ptr_map? 如何使用boost :: ptr_map有效地使用BOOST_FOREACH(字符数/可读性)...
学 Win32 汇编[12]: PTR、OFFSET、ADDR、THIS
PTR: 指定要操作的数据尺寸 ; Test12_1.asm.386.model flat, stdcallinclude windows.incinclude kernel32.incinclude masm32.incinclude debug.incincludelib...
智能指针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管理...
shared_ptr 和 unique_ptr
1.C++ 标准库智能指针c++11标准废除乐auto_ptr,使用这些智能指针作为将指针封装为纯旧 C++ 对象 (POCO) 的首选项。unique_ptr 只允许基础指针的一个所有者。 除非你确信需要 shared_ptr,否则请将该指针用作 POCO 的默认选项。 可以移到新所有者,但不会复...
[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...
STL中的智能指针(Smart Pointer)及其源码剖析: std::auto_ptr
STL中的智能指针(Smart Pointer)及其源码剖析: std::auto_ptrauto_ptr 是STL中的智能指针家族的成员之一, 它管理由 new expression 获得的对象,在 auto_ptr 对象销毁时,他所管理的对象也会自动被 dele...
STL中的智能指针(Smart Pointer)及其源码剖析: std::unique_ptr
STL中的智能指针(Smart Pointer)及其源码剖析: std::unique_ptr和 std::auto_ptr一样,std::unique_ptr也是一种智能指针,它也是通过指针的方式来管理对象资源,并且在 unique_ptr 的生命期结束后释放该资源。...
C++ 中boost::share_ptr智能指针的使用方法
这篇文章主要介绍了C++ 中boost::share_ptr智能指针的使用方法的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下
我应该自己擦除boost :: ptr_vector的指针吗?
I was wondering if this code leak : 我想知道这个代码是否泄漏: int main() { boost::ptr_vector <char> v; v.push_back(new char[10]); v.clear() } int main(){b...
C++ 智能指针 auto_ptr 和 shared_ptr
首先,如果你不知道什么是智能指针,请先移步:C++智能指针简单剖析1.auto_ptr #ifndef AUTO_PTR_H #define AUTO_PTR_H template<typename T> class auto_ptr { public : //使...