内存泄漏及浪费都是每个程序员非常忌讳的事情,但是稍有不慎就会造成不可弥补的损失,这里就这能指针sheard_ptr造成的循环引用及造成循环引用的原因我给大家给出了详细的图解及举例说明,同时也提供了避免这种循环引用的解决办法,就针对弱引用这一点做出了详细的解释,就针对shared_ptr和weak_ptr这两种智能指针的作用和用法也相加说明使得读者可以从代码及图例两方面对循环引用及解决办法有更深的认识。...
分类:
其他好文 时间:
2016-04-28 12:25:26
阅读次数:
260
C++:浅谈c++资源管理以及对[STL]智能指针auto_ptr源码分析标签:STL 智能指针 auto_ptr 源码分析by 小威威1. 知识引入在C++编程中,动态分配的内存在使用完毕之后一般都要delete(释放),否则就会造成内存泄漏,导致不必要的后果。虽然大多数初学者都会有这样的意识,但是有些却不以为意。我曾问我的同学关于动态内存的分配与释放,他的回答是:”只要保证new和delete...
分类:
编程语言 时间:
2016-04-28 01:55:46
阅读次数:
283
智能指针就是智能/自动化的管理指针所指向的动态资源的释放#include<iostream>#include<cstdlib>usingnamespacestd;//****************资源转移******************//最好不要使用,会因为释放野指针造成程序奔溃template<typenameT>classAutoPtr{public:Auto..
分类:
其他好文 时间:
2016-04-27 19:02:46
阅读次数:
209
智能指针是能够智能化的动态开辟空间和内存释放。C++中引入智能指针,是防止我们在动态开辟空间是,由于疏忽大意,导致内存的释放出现问题,最终致使内存泄漏。智能指针的基本特点:(1)智能指针管理的是一块内存的释放。(2)智能指针是一个类,有类似指针的功能。AutoPtr:#..
分类:
其他好文 时间:
2016-04-25 15:14:59
阅读次数:
169
C++ 智能指针详解
一、简介
由于 C++ 语言没有自动内存回收机制,程序员每次 new 出来的内存都要手动 delete。程序员忘记 delete,流程太复杂,最终导致没有 delete,异常导致程序过早退出,没有执行 delete 的情况并不罕见。用智能指针便可以有效缓解这类问题,本文主要讲解参见的智能指针的用法。包括:std::auto_ptr、boost::scoped_ptr...
分类:
其他好文 时间:
2016-04-22 19:53:53
阅读次数:
158
1. 永恒的话题:内存泄漏 (1)动态申请堆空间,用完后不归还 (2)C++语言中没有垃圾回收的机制 (3)指针无法控制所指堆空间的生命周期 【编程实验】内存泄漏 #include <iostream> #include "IntArray.h" using namespace std; class ...
分类:
其他好文 时间:
2016-04-21 23:29:04
阅读次数:
215
智能指针的三种常见写法:一、最开始的原始写法,原始写法可以理解为指针转移的方法。template<typenameT>
classAutoPtr
{
public:
AutoPtr()
:_ptr(NULL)
{}
AutoPtr(T*ptr)
:_ptr(ptr)
{}
~AutoPtr()
{
if(_ptr)
{
delete_ptr;
_ptr=NULL;
}
}
AutoPtr<T>(Aut..
分类:
编程语言 时间:
2016-04-21 07:36:46
阅读次数:
211
智能指针:是存储指向动态分配对象指针的类。能够在适当的时间自动删除指向的对象。下面是它的三种实现://autoptr
template<classT>
classAutoptr
{
public:
Autoptr(T*ptr)
:_ptr(ptr)
{}
~Autoptr()
{
if(_ptr)
{
delete_ptr;
_ptr=NULL;
}
}
Aut..
分类:
其他好文 时间:
2016-04-20 02:14:48
阅读次数:
138
关于RAII,官方给出的解释是这样的“资源获取就是初始化”。听起来貌似不是很懂的哈,其实说的通俗点的话就是它是一种管理资源,避免内存泄漏的一种方法。它可以保证在各种情况下,当你对对象进行使用时先通过构造函数来进行资源的分配和初始化,最后通过析构函数来进行清理,..
分类:
其他好文 时间:
2016-04-15 23:20:17
阅读次数:
612
智能指针可以用来处理动态内存回收的问题但一旦令智能指针指向动态内存如:inta=2;
scoped_ptr<int>spi1(&a);程序肯定会发生崩溃。原因是在spi1出了作用域进行析构函数的时候,会对栈内存进行delete,这是不合法的。假如能解决这个问题,我们的智能指针就能指向任何..
分类:
其他好文 时间:
2016-04-12 16:06:03
阅读次数:
172