文本内容:
第六章内存管理实验
一、简述分块式内存管理的原理内存管理,是指软件运行时对计算机内存资源的分配和使用的技术其最主要的目的是如何高效,快速的分配,并且在适当的时候释放和回收内存资源内存管理的实现方法有很多种,他们其实最终都是要实现2个函数malloc和free;malloc函数用于内存申请,free函数用于内存释放分块式内存管理是众多内存管理方式中的一种它的实现原理如下图所示内存池
二、简述造成内存泄漏的原因内存管理表内存泄漏:是指在程序代码中动态申请的、堆上的内存由于某种原因、在使用后没有被释图分块式内存管理原理图6-1放,进而造成内存的浪费少部分的内存泄漏不会影响程序的正常运行,不过如果是持续的内存泄漏会耗光系统内存,最终会导致程序卡死甚至系统崩溃例1,使用malloc申请的内存要主动调用free,new申请的内存要主动调用delete,否则就会导致内存泄漏
2.使用new申请的数组,释放的时候要用delete]删除,如果错误地使用delete删除,就会造成内存泄漏
三、若需要同时申请并使用多块内存,如何避免内存泄漏?
1、不要手动管理内存,可以尝试在适用的情况下使用智能指针
2、使用string而不是char*string类在内部处理所有内存管理,而且它速度快且优化得很好
3、除非要用旧的lib接口,否则不要使用原始指针
4、在C++中避免内存泄漏的最好方法是尽可能少地在程序级别上进行new和delete调用-最好是没有任何需要动态内存的东西都应该隐藏在一个RAH对象中,当它超出范围时释放内存RAH在构造函数中分配内存并在析构函数中释放内存,这样当变量离开当前范围时,内存就可以被释放
5、使用了内存分配的函数,要记得使用其想用的函数释放掉内存可以始终在new和delete之间编写代码,通过new关键字分配内存,通过delete关键字取消分配内存。