现在的位置: 首页 > 自动控制 > 工业·编程 > 正文

c++内存池作用和优势

2018-07-28 21:07 工业·编程 ⁄ 共 425字 ⁄ 字号 暂无评论

    C/C++下内存管理是让几乎每一个程序员头疼的问题,分配足够的内存、追踪内存的分配、在不需要的时候释放内存——这个任务相当复杂。而直接使用系统调用malloc/free、new/delete进行内存分配和释放,有以下弊端:

    1.调用malloc/new,系统需要根据“最先匹配”、“最优匹配”或其他算法在内存空闲块表中查找一块空闲内存,调用free/delete,系统可能需要合并空闲内存块,这些会产生额外开销;

    2.频繁使用时会产生大量内存碎片,从而降低程序运行效率;

    3.容易造成内存泄漏;

    内存池(memory pool)是代替直接调用malloc/free、new/delete进行内存管理的常用方法,当我们申请内存空间时,首先到我们的内存池中查找合适的内存块,而不是直接向操作系统申请,优势在于:

    1.比malloc/free进行内存申请/释放的方式快;

    2.不会产生或很少产生堆碎片;

    3.可避免内存泄漏;

给我留言

留言无头像?