题记:内存管理一直是C/C++程序的红灯区。关于内存管理的话题,大致有两类侧重点,一类是内存的正确使用,例如C++中new和delete应该成对出现,用RAII技巧管理内存资源,auto_ptr等方面,很多C/C++书籍中都使用技巧的介绍。另一类是内存管理的实现,如linux内核的slab分配器,S ...
分类:
其他好文 时间:
2019-02-01 14:10:35
阅读次数:
227
“different,but not less. 不同,但也不差!” 前记 出现内存错误,查问题是一方面,更多的是需要考虑,以后写代码如何不出现内存错误。总结很关键。 《Linux多线程服务端编程使用muduo网络库》这本书说的是RAII技术(后期研究下,做一些实践)。 自己的总结:new 出的内存 ...
分类:
其他好文 时间:
2018-12-24 02:57:56
阅读次数:
994
RAII的思想,用对象管理资源,处理管理资源的对象被拷贝的情况 ...
分类:
编程语言 时间:
2018-12-24 02:42:51
阅读次数:
245
资源管理 所谓资源就是,一旦用了它,将来必须还给系统. 13.以对象管理资源 为防止资源泄露,请使用RAII对象,他们在构造函数中获得资源并在析构函数中释放资源. 两个常被使用的RAII classes 对象分别是trl::shared_ptr和auto_ptr.前者通常是较佳选择,因为其copy行 ...
分类:
其他好文 时间:
2018-12-22 16:44:37
阅读次数:
228
参考: "C++中的RAII介绍" RAII全称是“Resource Acquisition is Initialization”,直译过来是“资源获取即初始化”,也就是说在构造函数中申请分配资源,在析构函数中释放资源。因为C++的语言机制保证了,当一个对象创建的时候,自动调用构造函数,当对象超出作 ...
分类:
编程语言 时间:
2018-11-26 22:07:08
阅读次数:
294
C++作为一门Native Langueages,在C++98/03时代,资源管理是个大问题。而内存管理又是其中一个大问题。申请的堆内存需要手动分配和释放,为了确保内存正确释放,一般原则是"谁分配谁负责释放",但软件工程的复杂性、程序员的编码水平参差不齐等仍然导致内存泄漏、空悬指针等问题。严重的内存 ...
分类:
编程语言 时间:
2018-11-16 17:25:15
阅读次数:
360
1、关于智能指针的理解 1)智能指针是使用RAII技术(资源的获取即初始化)对普通指针进行封装得到的,其实质是一个指针,使用起来像指针。 2)智能指针可以用来解决程序员忘记使用delete释放内存从而导致内存泄漏,或者多次释放同一块内存,以及当程序出现异常时进入catch块中导致内存忘记释放。 3) ...
分类:
编程语言 时间:
2018-10-14 01:53:01
阅读次数:
151
阅读目录 C++异常机制概述 throw 关键字 异常对象 catch 关键字 栈展开、RAII 异常机制与构造函数 异常机制与析构函数 noexcept修饰符与noexcept操作符 异常处理的性能分析 阅读目录 C++异常机制概述 throw 关键字 异常对象 catch 关键字 栈展开、RAI ...
分类:
编程语言 时间:
2018-10-07 15:31:58
阅读次数:
154
是的,你没有看错, 不是c++不是c#, 就是你认识的那个c语言。 在很长一段时间里,c的内存管理问题, 层出不穷,不是编写的时候特别费劲繁琐, 就是碰到内存泄漏排查的各种困难, 特别在多线程环境下,就难上加难了, 诸如此类的老大难问题。 c++用它的RAII机制妥妥影响了一代程序员。 RAII大概 ...
分类:
编程语言 时间:
2018-08-19 13:07:32
阅读次数:
225
什么是RAII 技术?(参见百度百科相关条目) RAII(Resource Acquisition Is Initialization)是一种利用对象生命周期来控制程序资源(如内存、文件句柄、网络连接、互斥量等等)的简单技术。 RAII 的一般做法是这样的:在对象构造时获取资源,接着控制对资源的访问 ...
分类:
编程语言 时间:
2018-08-06 11:43:19
阅读次数:
625