代码: #include <memory> #include <iostream> int main(int argc, char*argv[]){ ? ? std::shared_ptr<int> a(new int(1)); ? ? std::weak_ptr<int>d(a); ? ? std::cout<<"d.use_count() = "<<d.use_cou...
分类:
其他好文 时间:
2015-09-09 19:53:59
阅读次数:
211
C++没有提供垃圾回收机制,C++11提供的智能指针能够在一定程度上解决C++内存泄漏的问题。C++11提供了共享智能指针(shared_ptr),独占智能指针(unique_ptr),弱引用指针指针(weak_ptr),使用时需要引用智能指针本质上存储动态分配(堆)对象的指正的模板类,用于对堆对象...
分类:
编程语言 时间:
2015-08-26 15:20:36
阅读次数:
338
智能指针概述:
智能指针用来管理动态对象。其行为类似于常规指针,重要的区别是:它负责自动释放所指向的对象。
C++ 11标准库提供两种智能指针:shared_ptr、unique_ptr
区别是:shared_ptr允许多个指针指向同一个对象;unique_ptr则独占所指向的对象。
另外,还有一种weak_ptr的伴随类,它是一种弱引用,指向shared_ptr所管理的对象。
...
分类:
编程语言 时间:
2015-08-10 12:07:49
阅读次数:
232
如果在程序中使用new从堆(自由存储区)分配内存,等到不需要时, 应使用delete将其释放。c++引入了智能指针auto_ptr, 以帮助自动完成这个过程。 c++11摒弃了auto_ptr,并新增了三种智能指针:unique_ptr, shared_ptr, weak_ptr。
一. auto_ptr, unique_ptr , shared_ptr
头文件: #include...
分类:
编程语言 时间:
2015-07-30 00:46:46
阅读次数:
271
我的经验:在强调运行效率的场合:shared_ptr/weak_ptr很好用,尤其是weak_ptr这个能够判断一个对象的生命周期的玩意,可以简化和扩展很多设计。unordered系列的容器也很不错。thread+function+bind是异步编程的利器。signal:这个因为个人比较喜事件驱动这...
分类:
其他好文 时间:
2015-07-20 09:10:22
阅读次数:
123
我们发现设计模式在Java社区很流行,但是在C++社区却没有那么被关注,甚至有点被排斥,究竟是什么原因造成这个差异的呢?
(1)C++内存需要自己管理,所以有些模式在C++里使用不是那么方便,但是Java不用关心内存,所以在Java里的使用设计模式有天生的优势。随着shared_ptr, weak_ptr, unique_ptr等加入C++11,相信这方面会有所改进。
(2)在J...
分类:
编程语言 时间:
2015-07-14 18:06:04
阅读次数:
170
在C++11中,引入了智能指针。主要有:unique_ptr, shared_ptr, weak_ptr。 这3种指针组件就是采用了boost里的智能指针方案。很多有用过boost智能指针的朋友,很容易地就能发现它们之间的关间: std boost 功能说明...
分类:
编程语言 时间:
2015-06-12 15:24:56
阅读次数:
501
Cocos2d-x 3.2:智能指针本文转载自深入理解Cocos2d-x 3.x:内置数据结构(1)智能指针智能指针在 C++ 11 的标准中已经存在了,分别是unique_ptr,shared_ptr,weak_ptr,其中最常用的应该是share_ptr,它采用引用计数的方 式管理内存,当引用计...
分类:
其他好文 时间:
2015-06-08 07:19:21
阅读次数:
233
解决循环引用: 在知道存在循环引用的条件下,使用boost::weak_ptr,即弱引用来代替循环引用中的某个强引用,从而打破循环引用的环。由于 C++ 语言没有自动内存回收机制,程序员每次 new 出来的内存都要手动 delete,比如流程太复杂,最终导致没有 delete,异常导致程序过早退出,...
分类:
编程语言 时间:
2015-05-27 22:39:10
阅读次数:
597