101 C++内存高级话题 内存池概念,代码实现和详细分析

零 为什么要用内存池?

从前面的知识我们知道,当new 或者 malloc 的时候,假设您想要malloc 10个字节,

char * pchar = new char[10];

char *pchar1 = malloc(10);

实际上编译器为了 记录和管理这些数据,做了不少事情,类似这张图。

从上述看到,每new 一个 class都会使用这些字节:

4+(30到60)+(真的分配的10字节)(10到几十个)+4

也就是说:为了这10个字节,实际上背后服务的有更多的字节。

如果在某一个场景下,我们需要new 出来大量的class,例如卡牌的10连抽,100连抽,那么每次new一个class,都会有大量的背后服务的字节使用。有没有一种方法可以减少这种背后服务的字节数量呢?

因此C++的前辈们就搞了一个内存池。

一 内存池的概念和实现原理概述

概念:当malloc 或者 new 的时候,创建一个class 整倍数的

二 针对一个类的内存池实现演示代码

三,内存池代码后续说明。

相关推荐

  1. C++实现简单的内存

    2024-02-03 22:36:01       37 阅读
  2. C++内存

    2024-02-03 22:36:01       37 阅读
  3. C++服务内存分析

    2024-02-03 22:36:01       38 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-03 22:36:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-03 22:36:01       101 阅读
  3. 在Django里面运行非项目文件

    2024-02-03 22:36:01       82 阅读
  4. Python语言-面向对象

    2024-02-03 22:36:01       91 阅读

热门阅读

  1. linux系统ansible工具的剧本发布workpress剧本编写

    2024-02-03 22:36:01       55 阅读
  2. 开源软件:推动软件行业变革的引擎

    2024-02-03 22:36:01       47 阅读
  3. 开源软件的影响力

    2024-02-03 22:36:01       53 阅读
  4. 13.2 Web与Servlet进阶(❤❤)

    2024-02-03 22:36:01       48 阅读
  5. SpringBoot 与 ZXing 完美结合,轻松生成二维码!

    2024-02-03 22:36:01       45 阅读
  6. 案例七:MBR破坏恢复

    2024-02-03 22:36:01       51 阅读
  7. 购物车页面收货地址实现

    2024-02-03 22:36:01       48 阅读