当我们在编写一些结构复杂的程序的时候,有时候可能需要不断地开辟内存,但是往往就会忘记去释放它,从而造成内存泄露。使用new和delete来管理动态内存常出的一些错误:1.忘记delete,即导致了“内存泄漏”,2.野指针。在对象已经被释放掉之后,(这里注意,此时的指针成为了悬..
分类:
其他好文 时间:
2016-04-05 02:19:45
阅读次数:
198
RAIIRAII资源分配即初始化,定义一个类来封装资源的分配和释放,在构造函数完成资源的分配和初始化,在析构函数完成资源的清理,可以保证资源的正确初始化和释放。智能指针的引入:由于return,throw等关键字的存在,导致顺序执行流的错乱,不断的进行跳转,使开辟的空间看似被..
分类:
编程语言 时间:
2016-04-05 02:17:45
阅读次数:
308
首先了解shared_ptr毫无疑问的是智能指针的一种,智能指针是为了解决在大型代码里无法不好控制指针的问题,例如:在类里面如果出现了动态开辟出来的空间,有一个指针指向这块空间,如果在相应的作用范围之内没有将其delete掉会造成内存的泄漏,所以这样就必须手动的对这一块空..
分类:
其他好文 时间:
2016-04-04 21:16:42
阅读次数:
332
智能指针是C++中为了实现资源的有效管理而被提出的,我们可以创建它但无须操心它的释放问题,在引入异常机制的程序里它是十分有用的,或者说,对于博主这中粗心大意的人来说还是可以偶尔使用的。他可以在一些场合防止内存泄漏的问题。但是,智能指针也是存在着许多的问题,所以..
分类:
其他好文 时间:
2016-04-04 21:09:46
阅读次数:
249
方案一:因为在类中对同一块空间的析构在一次以上,就会发生错误,所以在进行赋值和拷贝构造时(同一块空间有一个以上的指针指向),保证只有一个指针指向这块空间,对原指针赋空操作,这样在析构时一块空间只会被析构一次classAutoPtr
{
public:
//构造函数
AutoPtr(T*ptr)
..
分类:
其他好文 时间:
2016-04-04 21:08:19
阅读次数:
155
今天让我们来分析一下C++中的智能指针和异常,首先呢先普及一下概念!(1)智能指针:智能或者自动化的管理指针所会向的动态资源的释放。(2)异常:当一个函数发现自己无法处理的错误时,让函数的调用者直接或间接的处理这个问题。(3)RAII:资源分配即初始化。构造函数完成..
分类:
其他好文 时间:
2016-04-04 21:07:08
阅读次数:
210
切忌混用智能指针和内置指针,特别是用内置指针初始化智能指针,即 ...
分类:
其他好文 时间:
2016-04-04 20:55:30
阅读次数:
133
一开始学C++的时候老师推荐的就是Dev C++这个IDE,用起来感觉还不错,使用起来比较简单,而且属于比较轻量级的,不怎么占用内存;缺点可能就是调试功能没有项VS那种大型IDE齐全和好用,不过对于一个新手来说绝对足够了。 最近在一些工程中需要用到智能指针的库,比如说auto_ptr以及boost里 ...
分类:
编程语言 时间:
2016-04-04 14:46:31
阅读次数:
143
一.统一的初始化方法 二.成员变量默认初始值 三.auto关键字用于定义变量,编译器可以自动判断变量的类型 四.decltype 关键字求表达式的类型 五.智能指针shared_ptr? 头文件: <memory>? 通过shared_ptr的构造函数,可以让shared_ptr对象托管一个new运 ...
分类:
编程语言 时间:
2016-04-01 20:14:47
阅读次数:
273
目前为止我们使用过的静态内存,栈内存和内存池,静态内存用来保存局部static对象、类static成员,以及定义在任何函数之外的成员。栈内存用来保存定义在函数内部的非static成员,分配在静态内存或栈内存中的对象由编译器自动创建或销毁,对于栈对象仅在其定义的程序块运行时才..
分类:
编程语言 时间:
2016-04-01 16:11:06
阅读次数:
231