template class SharedPtr { public: SharedPtr():ptr(new T()),count(new int(1)){}//无参构造 explicit SharedPtr(T *src):ptr(str),count(new int(1)){}//有参构造 ex... ...
分类:
其他好文 时间:
2019-05-23 21:01:02
阅读次数:
89
智能指针是能够智能化的动态开辟空间和内存释放。C++中引入智能指针,是防止我们在动态开辟空间是,由于疏忽大意,导致内存的释放出现问题,最终致使内存泄漏。智能指针的基本特点:(1)智能指针管理的是一块内存的释放。(2)智能指针是一个类,有类似指针的功能。AutoPtr:#..
分类:
其他好文 时间:
2016-04-25 15:14:59
阅读次数:
169
RAII:资源分配及初始化。但是这个翻译并没有显示出这个惯用法的真正内涵。RAII的好处在于它提供了一种资源自动管理的方式,当出现异常,回滚等现象时,RAII可以正确的释放资源。内存泄漏会导致:1.内存耗尽2.其他程序可能用不了了3.程序崩溃在资源的获取和释放之间,我们通常..
分类:
其他好文 时间:
2016-04-07 01:41:25
阅读次数:
204
#pragmaonce//智能指针//定义个类来封装资源的分配和释放,在构造函数完成资源的分配和初始化,在析构函数完成资源的//清理,可以保证资源的正确初始化和释放。//这里简单实现AutoPtr、ScopedPtr、ScopedArray以及SharedPtr//------------------------------SmartPtr.h--------..
分类:
编程语言 时间:
2016-04-01 06:48:39
阅读次数:
274
智能指针:动态的管理开辟的内存,防止人为的内存泄漏。
SharedPtr的实现:
原理:使用引用计数的原理使多个对象可以指向一块空间。
#define_CRT_SECURE_NO_WARNINGS
#include<iostream>
usingnamespacestd;
template<classT>
classSharedPtr
{
public:
SharedPt..
分类:
其他好文 时间:
2016-03-30 19:47:06
阅读次数:
167
模拟实现AutoPtr、ScopedPtr、SharedPtr智能指针实际上就是能够智能化的管理动态开辟空间的内存释放问题,C++中引入智能指针,很大一方面是当我们在动态开辟空间时,由于一些疏忽,或者说是对于一些代码,执行的顺序不是我们预期能够想到的,导致一些内存泄露的问题,使得程序..
分类:
其他好文 时间:
2016-03-24 18:38:40
阅读次数:
167
auto_ptr与scoped_ptr的实现见本人的上篇博客。三、shared_ptrshared_ptr的实现原理是通过引用计数来实现,只有当引用计数为1时才释放空间,否则只需将引用计数减1.拷贝和赋值将引用计数加1,具体代码如下:template<typenameT>
classSharedPtr
{
public:
SharedPtr();
..
分类:
其他好文 时间:
2016-03-23 23:48:50
阅读次数:
210
引言:由于C++语言没有自动内存回收机制,程序员每次new出来的内存都要手动delete。程序员忘记delete,流程太复杂,最终导致没有delete,异常导致程序过早退出,没有执行delete的情况并不罕见。RAII(ResourceAcquisitionIsInitialization)资源分配即初始化,定义一个类来封装资..
分类:
编程语言 时间:
2016-03-22 00:54:14
阅读次数:
350
本节是对上一篇博客的附加代码,基本的45条款思想已经实现。#include
using namespace std;template
class SharedPtr
{
public:
template
SharedPtr(const SharedPtr&u) :ptr(u.get())
{...
分类:
编程语言 时间:
2015-06-07 17:34:06
阅读次数:
178