返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++基本组件之内存池的概念是什么
  • 222
分享到

C++基本组件之内存池的概念是什么

2023-07-05 07:07:31 222人浏览 薄情痞子
摘要

这篇文章主要介绍了c++基本组件之内存池的概念是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C++基本组件之内存池的概念是什么文章都会有所收获,下面我们一起来看看吧。内存池概念尽量减少malloc的次数频

这篇文章主要介绍了c++基本组件之内存池的概念是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C++基本组件之内存池的概念是什么文章都会有所收获,下面我们一起来看看吧。

内存池概念

尽量减少malloc的次数

频繁申请小块内存空间都造成空间的极大浪费

利用new和delete运算符重载,替代系统调用

减少malloc的次数,可在一定程度上提高效率

用malloc申请一个大块内存,从一大块内存中,一点点分配给用户

当一大块快用光了,再申请一大块

#include <iOStream>#include <malloc.h>#include <time.h>using namespace std;namespace _nm1{//内存池//减少malloc的次数,减少对内存的浪费//尤其是频繁地申请小块内存//速度和效率的提升并不是特别明显,因为malloc的速度也不慢//用malloc申请//一个大块内存,从一大块内存中,一点点分配给用户//当一大块快用光了,再申请一大块class A{public:static void *operator new(size_t size);//静态成员函数,属于类,不属于对象static void operator delete(void *phead);static int m_iCout;//分配计数统计static int m_iMallocCount;//malloc次数统计private:A *next;//指针域,指向下一个空间static A* m_FreePosi;//总是指向一块分配出去的内存首地址static int m_sTrunkCout;//一次分配多少倍};int A::m_iCout = 0;//初始化int A::m_iMallocCount = 0;A *A::m_FreePosi = nullptr;int A::m_sTrunkCout = 5;//一次分配五倍void * A::operator new(size_t size){//核心实现代码A* templink;if (m_FreePosi == nullptr){//待分配内存为空时size_t realsize = m_sTrunkCout*size;//一次五倍m_FreePosi = reinterpret_cast<A*>(new char[realsize]);//一次向系统要5倍的类A字节数大小,不是递归,系统newtemplink = m_FreePosi;//将分配出来的内存,彼此之间链表串起来for (; templink != &m_FreePosi[m_sTrunkCout - 1]; ++templink){//链到最后一个节点空间,结束templink->next = templink + 1;}templink->next = nullptr;++m_iMallocCount;//统计次数}templink = m_FreePosi;m_FreePosi = m_FreePosi->next;//既然已经将templink成功返回回去了,就指向下一个能用的内存块++m_iCout;return templink;//返回能有的下一块内存}void A::operator delete(void * phead){(static_cast<A*>(phead)->next) = m_FreePosi;//将当前要释放的节点指针,指向我下一个空闲块m_FreePosi = static_cast<A*>(phead);//始终指向下一个能分配的内存块//将m_FreePosi可用空闲块的指针,直接指向了当前要释放的节点//意味着后面来申请了,可以直接将这块空间覆盖//前面Phead->next已经指向了下一个空闲块,所以m_FreePosi可以直接next到}void func(){//测试代码clock_t start, end;start = clock();for (int i = 0; i < 500; i++){A *pa = new A();//重载了new}end = clock();cout << "申请分配内存的次数" << A::m_iMallocCount << endl;cout << end - start << endl;//测试内存池所用时间}void func1(){//测试代码clock_t start, end;start = clock();for (int i = 0; i < 5000000; i++){A *pa = ::new A();//重载了new}end = clock();cout << end - start << endl;//测试普通new所用时间}}int main(){//_nm::func();_nm1::func();_nm1::func1();getchar();}

C++基本组件之内存池的概念是什么

C++基本组件之内存池的概念是什么

C++基本组件之内存池的概念是什么

C++基本组件之内存池的概念是什么

关于“C++基本组件之内存池的概念是什么”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“C++基本组件之内存池的概念是什么”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网其他教程频道。

--结束END--

本文标题: C++基本组件之内存池的概念是什么

本文链接: https://lsjlt.com/news/350424.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • C++基本组件之内存池的概念是什么
    这篇文章主要介绍了C++基本组件之内存池的概念是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C++基本组件之内存池的概念是什么文章都会有所收获,下面我们一起来看看吧。内存池概念尽量减少malloc的次数频...
    99+
    2023-07-05
  • C++基本组件之内存池详解
    内存池概念 1:尽量减少malloc的次数 2:频繁申请小块内存空间都造成空间的极大浪费 3:利用new和delete运算符重载,替代系统调用 4:减少malloc的次数,可在一定程...
    99+
    2023-03-01
    C++ 基本组件 内存池 C++ 内存池
  • Python进程池基本概念是什么
    这篇文章主要介绍“Python进程池基本概念是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python进程池基本概念是什么”文章能帮助大家解决问题。前言:创建进程池可以形象地理解为创建一个并行...
    99+
    2023-06-29
  • C++时间的基本概念是什么
    本篇文章为大家展示了C++时间的基本概念是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。C++编程语言中对于时间的操作还是比较多的,能帮助程序开发人员在实际编程中实现各种对时间操作的需求。我们近...
    99+
    2023-06-17
  • C++引用的基本概念是什么
    本篇文章给大家分享的是有关C++引用的基本概念是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。C++编程语言中有很多应用方法和C语言有相同之处。那么作为C语言的升级版本,它...
    99+
    2023-06-17
  • J2SE的基本概念是什么
    本篇内容主要讲解“J2SE的基本概念是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“J2SE的基本概念是什么”吧!     Java概述:      目前Java主要应用于中间件的开发(mi...
    99+
    2023-06-03
  • Flex事件中的基本概念是什么
    这篇文章主要为大家展示了“Flex事件中的基本概念是什么”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Flex事件中的基本概念是什么”这篇文章吧。Flex简介Flex是响应RIA(富客户网络应用...
    99+
    2023-06-17
  • CSS基本概念是什么
    这篇文章主要介绍“CSS基本概念是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“CSS基本概念是什么”文章能帮助大家解决问题。 CSS正文: 1、CSS全称...
    99+
    2024-04-02
  • JAVA基本概念是什么
    这篇文章主要为大家展示了“JAVA基本概念是什么”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“JAVA基本概念是什么”这篇文章吧。一、java发展史1.java之父:詹姆斯·高家林2.关键时间点...
    99+
    2023-06-25
  • Nginx基本概念是什么
    本篇内容主要讲解“Nginx基本概念是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Nginx基本概念是什么”吧!什么是 Nginx?Nginx 最初是作为一个 Web 服务器创建的,用于解...
    99+
    2023-06-27
  • C++基础概念是什么
    这篇文章主要讲解了“C++基础概念是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++基础概念是什么”吧!首先,通过一张最新(2021.11)的编程语言排名图来了解常见的编程语言:从图...
    99+
    2023-06-22
  • Linux文件系统的基本概念是什么
    本篇内容主要讲解“Linux文件系统的基本概念是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux文件系统的基本概念是什么”吧!Linux 文件系统基本概念Linux 在最初的设计是 ...
    99+
    2023-06-15
  • 什么是SQLServer表的基本概念
    什么是SQLServer表的基本概念,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。SQLServer表的基本概念  表是包含数...
    99+
    2024-04-02
  • Spring AOP的基本概念是什么
    这篇文章主要介绍“Spring AOP的基本概念是什么”,在日常操作中,相信很多人在Spring AOP的基本概念是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Spring AOP的基本概念是什么”的疑...
    99+
    2023-06-20
  • Vue组件的概念是什么
    本篇内容介绍了“Vue组件的概念是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在多次使用到相同的函数和相同的HTML代码时,可以考虑抽...
    99+
    2023-06-20
  • Linux文件系统基本概念是什么
    这篇文章主要讲解了“Linux文件系统基本概念是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux文件系统基本概念是什么”吧!Linux 文件系统基本概念Linux 在最初的设计是...
    99+
    2023-06-15
  • C++ void的基础概念是什么
    本篇文章为大家展示了C++ void的基础概念是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。C++编程语言中的很多概念都值得我们去不断的学习,不断的从中积累经验以帮助我们在程序编写时获得更大的...
    99+
    2023-06-17
  • Spring AOP基本概念是什么
    本篇内容介绍了“Spring AOP基本概念是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!  什么是AOP  AOP即面向切面编程。 ...
    99+
    2023-06-02
  • C#网络编程TCP基本概念是什么
    这篇文章主要介绍“C#网络编程TCP基本概念是什么”,在日常操作中,相信很多人在C#网络编程TCP基本概念是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C#网络编程TCP基本概念是什么”的疑惑有所帮助!...
    99+
    2023-06-18
  • C++中C风格字符串的基本概念是什么
    今天就跟大家聊聊有关C++中C风格字符串的基本概念是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。C++编程语言作为一款C语言的升级版本,支持C语言中的各种功能,有经验的编程人员...
    99+
    2023-06-17
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作