C++编程如何避免memery leak
来源:互联网 发布:php发短信 编辑:程序博客网 时间:2024/04/28 12:33
项目中遇到到了内存泄露的问题,结果大家辛苦的对应了十日,挺痛苦的,所以自己想了想如何避免呢?总结如下:
1. 尽可能的让你的函数就一个出口(当然做不到也要尽可能的简单化,建议可以使用do{...}while(false)来实现函数的一个出口),这样做的好处是保证在函数的出口作所有内存的释放,另一个好处是程序的易维护性。
2. 类的属性成员的内存释放,一定要在类的析构函数里进行统一释放,不要在类的其它函数里去做,当然申请内存应该在构造函数里进行。理由:自动管理,多么省心呀~
3. 在使用指针的时候一定要先判断,后使用。注意:当用new或malloc等来申请内存时,一定要判断申请是否成功,当然在当今虚拟内存的技术下,可以理解内存空间是无限的(硬盘+内存),但是在某些特殊的情况下仍然有申请失败的可能~
4. [1]避免数组和指针的越界
[2]new和delete,new[]和delete[],malloc和free的使用匹配
[3]避免对同一内存释放多次
[4]避免用return返回局部变量的引用和指针
5. 避免“野指针”,“野指针”是指是指向“垃圾”内存的指针。产生的原因有3:指针变量没有初始化;指针被释放后没有将指针置为NULL;指针操作超出它的作用域。
6. 对资源的使用可以用RAII(Resource Acquisition Is Initialization)资源获取即初始化。就是利用对象的生命周期来控制程序的资源,最简单就是申请资源在构造函数中进行,释放资源在析构函数中进行,这样我们对资源的使用就达到自动控制了,但是为了资源使用完立即释放,最好将对象定义成局部的块变量!
7. Smart Pointers技术,(智能指针)是存储“指向动态分配(在堆上)的对象的指针”的对象。他们的行为很像 C++ 的内建指针,只是它们可以在适当的时候自动删除它们所指向的对象。智能指针在面对异常时有非常显著的作用,它们可以确保动态分配对象的完全析构。
- C++编程如何避免memery leak
- memery leak Exception
- activity contex and memery leak
- jdbc很多用法会导致memery leak
- 【博文推荐】一篇关于memery leak的博文
- A memery management interface---Source code_except.c
- A memery management interface---Source code_test.c
- 如何避免编程中的BUG
- 活用 g_object_weak_ref 避免 memory leak
- 如何检测C语言中的内存漏洞(leak)?
- Java编程如何避免内存溢出?
- CUDA GPU编程如何避免Bank conflict
- Android小记-SQLiteOpenHelper正确使用避免leak
- Memory leak detector ( C++)
- clang 编译器如何查看 c++对象的memery layout
- C中的野指针—如何避免
- C语言如何中避免野指针
- C语言中如何避免野指针
- 今天被T25 rerun的问题郁闷死了
- 函数的简单应用(原帖地址:http://topic.csdn.net/u/20090317/16/c7f5c2e3-293d-4d67-85be-0a4a17d52855.html)
- 日子
- 动态sql引用(原贴地址http://topic.csdn.net/u/20090313/10/30cd0407-3d5b-4fee-bb79-3897c137cba6.html)
- 动态链接库与静态链接库
- C++编程如何避免memery leak
- PHP Class&Object -- PHP 自排序二叉树
- 经济危机下如何用技术挣取外快的十种“开源”方法
- 神奇的手绘界面原型设计工具--Balsamiq Mockups(转载)
- php运用db类库进行数据库操作
- Tudor replica watches
- IE6很烂,为什么我们仍在使用?
- 情感:看80后男生娶妻的20条标准
- 消费者真的在意企业产品创新吗?