高并发下传统方式的弊端
C语言常用的内存操作函数

C++下采用new进行内存分配,delete进行内存释放。
弊端一

分配内存需要进入内核态,总分配大小不变的情况下,多次分配较小的内存导致了变态频繁,降低系统效率.
弊端二

弊端三

情形1调用了malloc函数没有调用free回收
情形2调用了fopen没有调用fclose方法回收内存
弊端四

弊端解决之道


高并发内存管理最佳实践
内存池技术



高效内存池设计与实现
实现思路(分而治之)

Nginx内存池结构图

如上图所示

第一个分配模块有一些附加信息
关键数据结构

为什么要设置failed参数?
当failed次数超过一定值,表明该内存块有难以利用的内部碎片,分配内存时不考虑该内存块
current指针是干嘛的?
current指针一开始指向首个分配模块,当首个分配模块的failed值超过某个值时,current会指向下一块,以此类推.......优先从current指针指向的分配模块分配内存。
ngx_pool_t 结构示意图

Ngix内存池基本操作







![同享TXEHR V15人力管理平台DownloadFile接口任意文件下载漏洞复现 [附POC]](https://i-blog.csdnimg.cn/direct/b37156a271884154a07a6a831f4788fb.png)













