智能指针(smart pointer)是存储指向动态分配(堆)对象指针的类,用于生存期控制,能够确保自动正确的销毁动态分配的对象,防止内存泄露。它的一种通用实现技术是使用引用计数(reference count)。智能指针类将一个计数器与类指向的对象相关联,引用计数跟踪该类有多少个对象共享同一指针。...
分类:
编程语言 时间:
2015-01-22 17:47:34
阅读次数:
323
在C++中,程序员可以直接操作内存,给编程增加了不少的灵活性。但是灵活性是有代价的,程序员必须负责自己负责释放自己申请的内存,否则就会出现内存泄露。智能指针就是为了解决这个问题而存在的。它和其他指针没有本质的区别,主要的目的就是为了避免悬挂指针、内存泄露的问题。在这里,我使用对象的应用计数做了一个s...
分类:
编程语言 时间:
2015-01-22 10:46:12
阅读次数:
236
在使用new和delete要注意的事项,以及使用智能指针时要注意的事项。...
分类:
编程语言 时间:
2015-01-16 22:23:45
阅读次数:
181
在系统中,资源是有限的,一旦用完必须归还给系统,否则可能会造成资源耗尽或其他问题。例如,动态分配的内存如果用完不释放会造成内存泄漏。
这里说的资源不仅仅是指内存,还包括其他,例如文件描述符、网络连接、数据库连接、互斥锁等。
在任何情况下都要把不使用的资源归还系统是一件非常困难的事情。尤其是考虑到异常、函数内多重回传路径等。
基于对象的资源管理办法几乎可以消除资源管理的问题。...
分类:
编程语言 时间:
2015-01-14 22:55:36
阅读次数:
250
1. auto_ptr
auto_ptr 是C++标准库提供的类模板,auto_ptr对象通过初始化指向由new创建的动态内存,它是这块内存的拥有者,一块内存不能同时被分给两个拥有者。当auto_ptr对象生命周期结束时,其析构函数会将auto_ptr对象拥有的动态内存自动释放。即使发生异常,通过异常的栈展开过程也能将动态内存释放。auto_ptr不支持new
数组。
2. auto_...
分类:
编程语言 时间:
2015-01-14 09:46:08
阅读次数:
263
转载请标明出处,原文地址:http://blog.csdn.net/hackbuteer1/article/details/7561235 智能指针(smart pointer)是存储指向动态分配(堆)对象指针的类,用于生存期控制,能够确保自动正确的销毁动态分配的对象,防止内存泄露。它的一种通...
分类:
编程语言 时间:
2015-01-13 23:07:51
阅读次数:
270
在effective C++经常会提到智能指针,这里对shared_ptr进行一个总结:
1 简要介绍用法
智能指针主要是用于资源管理,当申请一个资源的时候为了保证在离开控制流的时候对应资源应该得到相应的释放,这个时候如果资源对应一个类,在构造类的时候进行资源的分配(也就是书中经常提到的Resource Acquisition Is Initialization RAII),在对象离开作用域...
分类:
其他好文 时间:
2015-01-13 15:59:01
阅读次数:
298
根据前面一个博文内容已经讲述了如何根据两种遍历方式进行构建二叉树
这里利用递归方式遍历二叉树,递归方式比较简单,后续补充其余非递归方式
再此主要是完善类的使用:
其中重点在于:接口定义
二叉树的析构删除
以及类成员变量中如果有指针,同时涉及复制构造函数和赋值操作符函数时需要用到的智能指针
如果接口方面定义不够好,还望包涵
.h文件
#include
#include
#incl...
分类:
其他好文 时间:
2015-01-11 06:17:54
阅读次数:
226
导读智能指针是行为类似于指针的类对象,所有的智能指针都会重载->和*操作符。智能指针还有许多其他功能,比较有用的是自动销毁。这主要是利用栈对象的有限作用域以及临时对象(有限作用域实现)析构函数释放内存。当然,智能指针还不止这些,还包括复制时可以修改源对象等。智能指针根据需求不同,设计也不同(写时复制...
分类:
编程语言 时间:
2015-01-11 00:57:19
阅读次数:
360
因为Android中很多地方代码是用C++编写,为了能够保证C++中指针能够被正确的释放,于是Android引入了其实在C++中已经有的智能指针技术;智能指针技术的实质就是:记录引用某一个对象的次数,一旦检测到次数为0,这时就自定将此对象所占内存释放。简单的的智能指针技术因为不能解决对象循环引用的问...
分类:
移动开发 时间:
2015-01-08 00:44:46
阅读次数:
390