编程语言中实现自动垃圾回收机制方式有好几种,常见的有标记清除,引用计数,分代回收等。
C++需要手动管理垃圾,可以自己实现一个智能指针。最简单的是引用计数的思路
template
class SmartPointer {
T* obj;
unsigned int* count;
SmartPointer(T* ptr) {
obj = ptr;
...
分类:
其他好文 时间:
2015-07-30 23:31:19
阅读次数:
194
如果在程序中使用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
Android中通过引用计数来实现智能指针,并且实现有强指针与弱指针。由对象本身来提供引用计数器,但是对象不会去维护引用计数器的值,而是由智能指针来管理。要达到所有对象都可用引用计数器实现智能指针管理的目标,可以定义一个公共类,提供引用计数的方法,所有对象都去继承这个公共类,这样就可以实现所有对象都...
分类:
移动开发 时间:
2015-07-29 18:56:58
阅读次数:
146
c++ 实现数据库连接池
自己尝试用c++ 新标准实现了数据库连接池,代码简化了很多。 思路:
将数据库的连接当作一个对象添加进list队列中,在连接池创建的时候就建立好队列,并添加自定义大小的连接对象,连接对象用智能指针来管理(现代c++中不应该出现delete语句),避免类似内存泄漏等内存问题,智能指针上用lambda表达式注册了delete删除函数来释放连接资源,及时归还,(其中用...
分类:
数据库 时间:
2015-07-23 23:52:42
阅读次数:
292
需要注意:auto_ptr 类可以用于管理由 new 分配的单个对象,但是无法管理动态分配的数组(我们通常不会使用数组,而是使用 vector 代替数组)。auto_ptr 在拷贝和赋值的时候有不寻常的行为,因此 auto_ptrs 不能被保存在 stl 的容器中。当 auto_ptr 离开了自己的...
分类:
其他好文 时间:
2015-07-23 23:35:39
阅读次数:
211
1, auto_ptr类auto_ptr是一个模板类,定义如下:template class auto_ptr {...};它存储的是一个指向Type的指针。顾名思义,auto_ptr是一种智能指针,它包含一个动态分配内存的指针,并在它生命周期结束的时候,销毁包含的指针所指向的内存。 例1: ...
分类:
其他好文 时间:
2015-07-23 23:32:14
阅读次数:
214
由于之前也只是了解智能指针,要我说估计只能说个它是干什么的,用不了几分钟。
昨天花了一天时间各种百度,算是对智能指针有了一点了解,这篇文章基本就是这次分享会的PPT的copy,没有底层的东西,多是概念。
我觉得理解智能指针需要了解它发展的三个过程:起因,经过,结果。这篇文章主要讲述的是起因,经过和结果等以后工作了,实际接触了再说吧。
起因:
1.为什么需要智能指针
我们先看两个例...
分类:
其他好文 时间:
2015-07-22 18:46:01
阅读次数:
100
本文转自: http://blog.csdn.net/xt_xiaotian/article/details/5714477 (纯属自学转载)一、简介由于 C++ 语言没有自动内存回收机制,程序员每次 new 出来的内存都要手动 delete。程序员忘记 delete,流程太复杂,最终导致没有 de...
分类:
编程语言 时间:
2015-07-21 23:40:36
阅读次数:
213
1. 智能指针(Smart Pointer)i.是存储指向动态分配(堆)对象指针的类ii.在面对异常的时候格外有用,因为他们能够确保正确的销毁动态分配的对象iii.RAII类模拟智能指针,见备注2. C++11提供了以下几种智能指针,位于头文件,它们都是模板类i.std::auto_ptr(复制/赋...
分类:
编程语言 时间:
2015-07-21 22:07:28
阅读次数:
212