STL之防止内存泄露
来源:互联网 发布:130万网络摄像头 编辑:程序博客网 时间:2024/06/06 00:09
可以自由分配和释放内存造就了C++的灵活和强大,但这也是使用C++最容易出现问题的地方,内存泄露问题,估计程序猿都会或多或少的遇到,也遭受了很多程序猿们的深恶痛绝,无数个加班的晚上可能就是因为少了一个delete的缘故。
用过C++的人基本上都应该会了较过一个叫STL(标准模板库)的东西,这个东西在一定程度上,更进一步推动了C++的发展和普及程序,里面对于C++模板以及C++三大特性封装、继承、多态的使用可以说是淋漓尽致,具体的介绍可以参考侯捷老师的《STL源码剖析》。STL有一个智能指针的东西,即auto_ptr,有了智能指针以后,再也不用担心忘记调用delete释放堆内存了。auto_ptr主要是通过构造函数来绑定堆内存指针,当auto_ptr对象销毁的时候,其析构函数就会释放掉绑定的堆内存,示例代码如下:
void Func1(){ int *ptr = new int; //...具体函数逻辑 delete ptr;//当函数逻辑很复杂的时候,很容易忘记这一句}void Func2(){ auto_ptr<int> ptr(new int); //...具体函数逻辑}
上面的Fun1函数在申请和释放堆内存至少要两句代码,而使用auto_ptr的Fun2函数只需要一句代码就可以了,还能保证在退出作用于的时候自动释放申请的内存空间,既干净又环保。
auto_ptr的实现就是《Effective C++》提到的以对象管理资源的方法,众所周知,类对象在退出其作用域时,会自动调用其析构函数,我们可以充分利用编译器提供的便利,在对象的构造函数生产资源,在对象的析构函数释放资源,这样就不用担心忘记释放资源了,但是既然有了auto_ptr这样的强大工具,我们没必要再重造车轮了,直接拿来主义就好了。
2 0
- STL之防止内存泄露
- 防止内存泄露
- JAVA防止内存泄露
- Handler防止内存泄露
- Android防止内存泄露
- 内存管理-防止泄露
- 内存泄露防止
- c# 防止内存泄露 内存溢出 之using的用法
- Linux应用开发之使Valgrind防止内存泄露
- Android之AsyncTask异步任务——防止内存泄露
- Symbian 防止RPointerArray内存泄露
- Spring配置防止内存泄露
- Java中防止内存泄露
- java细节,防止内存泄露
- Android内存优化防止内存泄露
- 内存泄露之Context泄露
- 防止C代码内存泄露的方法
- Linux下用Valgrind防止内存泄露
- C++之一些事一些情--变量初始化
- 在startos搭建LAMP之安装mysql
- oracle笔记
- G - 久违的月赛之一
- LInux PATH
- STL之防止内存泄露
- css中!important的作用
- 正则表达式
- OSGi基本概念初探
- (19) 临时表使用的两个极端
- Python运算符列表
- 如何将一个Activity设置成窗口的样式
- <mvn:default-servlet-handler/>标签作用
- A - LQX的作业