#pragmaonce//智能指针//定义个类来封装资源的分配和释放,在构造函数完成资源的分配和初始化,在析构函数完成资源的//清理,可以保证资源的正确初始化和释放。//这里简单实现AutoPtr、ScopedPtr、ScopedArray以及SharedPtr//------------------------------SmartPtr.h--------..
分类:
编程语言 时间:
2016-04-01 06:48:39
阅读次数:
274
1.智能指针template<classT>
classAutoPtr
{
public:
AutoPtr(T*ptr)
:_ptr(ptr)
{
}
~AutoPtr()
{
if(_ptr!=NULL)
{
cout<<"delete"<<_ptr<<endl;
delete_ptr;
_ptr=NULL;
}
}
AutoPtr(AutoPtr<T>&ap)
:_ptr(ap._ptr)
{
ap._ptr=NULL;//管..
分类:
其他好文 时间:
2016-04-01 06:43:53
阅读次数:
124
//智能指针可以自动销毁,用引用计数技术实现
#include<iostream>
usingnamespacestd;
template<classT>
classSmartPtr
{
protected:
T*_ptr;
size_t*_cout;
voidclear()
{
if(--*_cout==0)
{
delete_ptr;
delete_cout;
}
}
public:
SmartPtr(T*ptr=0)
:_ptr(pt..
分类:
其他好文 时间:
2016-03-31 19:02:34
阅读次数:
167
一、问题引入关于C++中的new和delete操作符,我们知道这两个操作符必须成对存在,才能避免内存泄漏。这一点在学习的时候被认为是常识,然而,在实际编写代码的过程中,却常常很难做到。下面有3种情况:1、代码很长。当需要用到delete的地方离使用与之对应的new操作符距离非常远..
分类:
编程语言 时间:
2016-03-31 00:26:11
阅读次数:
245
智能指针:动态的管理开辟的内存,防止人为的内存泄漏。
SharedPtr的实现:
原理:使用引用计数的原理使多个对象可以指向一块空间。
#define_CRT_SECURE_NO_WARNINGS
#include<iostream>
usingnamespacestd;
template<classT>
classSharedPtr
{
public:
SharedPt..
分类:
其他好文 时间:
2016-03-30 19:47:06
阅读次数:
167
我们知道c++标准库中定义了智能指针auto_ptr,但是我们很少用它,因为虽然它能够自动回收动态开辟的内存,不需要程序员自己去维护动态开辟的内存,但是当用它去赋值或者是拷贝构造时有一个管理权转移的过程,这样我们就不能很方便的使用auto_ptr。下面是简单的auto_ptr的实现,..
分类:
编程语言 时间:
2016-03-30 18:04:49
阅读次数:
245
由于想梳理data_layer的过程,整理一半发现有几个非常重要的头文件就是题目列出的这几个:
追本溯源,先从根基开始学起。这里面都是些什么鬼呢?
common类
命名空间的使用:google、cv、caffe{boost、std}。然后在项目中就可以随意使用google、opencv、c++的标准库、以及c++高级库boost。caffe采用单例模式封装boost的智能指针(caffe的灵...
分类:
其他好文 时间:
2016-03-29 10:51:25
阅读次数:
310
所谓定制删除器,就是向目标模板提供一个可以自由选择析构的接口,这样做的好处就是可以使智能指针模板不再只能单独管理内存,我们还可以用它管理文件指针之类的东西。其实现方法有两种,这里我们以share指针为例。1.传递一个类的模板参数并给出缺省值,模板中将该类设定为成员..
分类:
其他好文 时间:
2016-03-28 00:29:28
阅读次数:
252
#define_CRT_SECURE_NO_WARNINGS
#include<iostream>
usingnamespacestd;
template<classT>
classAuto_ptr
{
public:
Auto_ptr(T*_x):x(_x)
{}
Auto_ptr(Auto_ptr<T>&s):x(s.x)
{
s.x=NULL;
}
Auto_ptr&operator=(Auto_ptr<T>&s)
{
x=s...
分类:
编程语言 时间:
2016-03-26 08:49:48
阅读次数:
263
smart_ptr
raii ( Resource Acquisition Is Initialization )
智能指针系列的都统称为smart_ptr,包括c++98标准的auto_ptr
智能指针是一个类,通过重载->和*完成类似原始指针的操作。不过因为是类,所以可以做比如内存管理、线程安全之类的工作
智能指针均是自动管理内存,不需要显示调用delete
scoped_ptr...
分类:
其他好文 时间:
2016-03-26 07:59:56
阅读次数:
210