zoukankan      html  css  js  c++  java
  • 内存池01

    c/c++ 的内存分配(通过malloc或new)可能很耗时。

    更糟糕的是,随着时间的流逝,内存(memory)将形成碎片,

    所以一个应用程序的运行会越来越慢,当它运行了很长时间和/或执行了很多内存分配释放操作的时候。

    特别是,你频繁的申请很小的一块内存,堆(heap)会变成碎片的。

    解决方案:你自己的内存池

    一个(可能的)解决方法是内存池(Memory Pool)。
    在启动的时候,一个”内存池”(Memory Pool)分配一块很大的内存,并将会将这个大块(block)分成较小的块(smaller chunks)。每次你从内存池申请内存空间时,它会从先前已经分配的块(chunks)中得到,而不是从操作系统。最大的优势在于:
    l 非常少(几没有) 堆碎片
    l 比通常的内存申请/释放(比如通过malloc, new等)的方式快
    另外,你可以得到以下好处:
    l 检查任何一个指针是否在内存池里
    l 写一个”堆转储(Heap-Dump)”到你的硬盘(对事后的调试非常有用)
    l 某种”内存泄漏检测(memory-leak detection)”:当你没有释放所有以前分配的内存时,内存池(Memory Pool)会抛出一个断言(assertion).
  • 相关阅读:
    构造函数和析构函数
    关联[2]
    关联模型[1]
    auth 权限控制
    多语言设置
    文件上传
    验证码
    图像处理
    Session 与 Cookie
    控制器[3]
  • 原文地址:https://www.cnblogs.com/wainiwann/p/6845785.html
Copyright © 2011-2022 走看看