RT,代码参考了STL中shard_ptr的实现,基本原理是引用计数,利用Ref_cnt类来管理内存,在shared_ptr创建时创建,此后shared_ptr仅是在拷贝复制析构的过程中对引用进行修改,个人觉得比较有意思的一个地方在于通过对Ref_cnt类多态的应用使得shared_ptr无需额外增 ...
分类:
其他好文 时间:
2017-01-16 07:35:46
阅读次数:
314
#ifndef LINK_H #define LINK_H #include #include struct ListNode { int val; std::shared_ptr next; }; struct LinkList{ std::shared_ptr begin; std::share... ...
分类:
其他好文 时间:
2017-01-01 21:32:49
阅读次数:
202
多线程程序经常会遇到在某个线程A创建了一个对象,这个对象需要在线程B使用, 在没有shared_ptr时,因为线程A,B结束时间不确定,即在A或B线程先释放这个对象都有可能造成另一个线程崩溃, 所以为了省时间一般都是任由这个内存泄漏发生. 当然也可以经过复杂的设计,由一个监控线程来统一删除, 但这样 ...
分类:
编程语言 时间:
2016-12-16 19:45:58
阅读次数:
203
#include <memory> #include <iostream>#include <chrono>#include <thread>using namespace std; struct ListNode { int val; shared_ptr<ListNode> next;}; bo ...
分类:
其他好文 时间:
2016-11-27 23:32:04
阅读次数:
230
Then what's really happening is TWO different sections of memory are being allocated. It's done at one time, but it's two "logical" blocks. One is the ...
分类:
编程语言 时间:
2016-11-08 19:36:58
阅读次数:
334
c++11标准废除乐auto_ptr, C++ 标准库智能指针 使用这些智能指针作为将指针封装为纯旧 C++ 对象 (POCO) 的首选项。 unique_ptr 只允许基础指针的一个所有者。 除非你确信需要 shared_ptr,否则请将该指针用作 POCO 的默认选项。 可以移到新所有者,但不会 ...
分类:
其他好文 时间:
2016-10-20 22:05:55
阅读次数:
215
C++智能指针 shared_ptr shared_ptr 是一个标准的共享所有权的智能指针, 允许多个指针指向同一个对象. 定义在 memory 文件中(非memory.h), 命名空间为 std. shared_ptr 是为了解决 auto_ptr 在对象所有权上的局限性(auto_ptr 是独 ...
分类:
编程语言 时间:
2016-10-04 14:08:28
阅读次数:
242
C++智能指针 weak_ptr weak_ptr 是一种不控制对象生命周期的智能指针, 它指向一个 shared_ptr 管理的对象. 进行该对象的内存管理的是那个强引用的 shared_ptr. weak_ptr只是提供了对管理对象的一个访问手段. weak_ptr 设计的目的是为配合 shar ...
分类:
编程语言 时间:
2016-10-04 14:04:13
阅读次数:
251
重做上一题,这次使用shared_ptr 而不是内置指针。上一题题目为:(编写函数,返回一个动态分配的int的vector。将此vector传递给另一个函数,这个函数读取标准输入,将读入的值保存在vector元素中。再将vector传递给另外一个函数,打印读入的值。记得在恰当的时刻delete ve ...
分类:
编程语言 时间:
2016-09-16 11:21:45
阅读次数:
166
shared_ptr虽然方便,但是它有着一个致命的缺陷就是循环引用问题,因为shared_ptr本身并没有能力解决这个问题,所以我们又引入了弱指针weak_ptr来辅助shared_ptr解决这个问题。那么循环引用又是什么场景?举个栗子:假设现在我们要创建一个双向整形链表,但是这个链表的指针域..
分类:
其他好文 时间:
2016-09-06 23:30:48
阅读次数:
174