易语言实现内存池源码

易语言实现内存池源码

.版本 2 .程序集 memPool, , 公开 .程序集变量 m_stack, stack .程序集变量 m_license, 整数型 .程序集变量 m_unitSize, 整数型 .子程序 _初始化, , , 当基于本类的对象被创建后,此方法会被自动调用 m_license = _aligned_malloc (24, 4) InitializeCriticalSection_ (m_license) .子程序 _销毁, , , 当基于本类的对象被销毁前,此方法会被自动调用 DeleteCriticalSection_ (m_license) _aligned_free (m_license) .子程序 create, , 公开 .参数 max, 整数型, 可空, 最大 默认2048 .参数 size, 整数型, 可空, 大小 默认1024 .参数 unitSize, 整数型, , 内存大小 .局部变量 l_point, 整数型 EnterCriticalSection_ (m_license) m_stack.create (max, size) .如果真 (unitSize % 8 ≠ 0) unitSize = (unitSize \ 8 + 1) × 8 .如果真结束 m_unitSize = unitSize .变量循环首 (1, size, 1, ) l_point = _aligned_malloc (m_unitSize, 4) .如果真 (l_point ≠ 0) m_stack.push (l_point) .如果真结束 .变量循环尾 () LeaveCriticalSection_ (m_license) .子程序 destroy, , 公开 .局部变量 l_point, 整数型 EnterCriticalSection_ (m_license) .判断循环首 (真) l_point = m_stack.popup () .如果 (l_point ≠ 0) _aligned_free (l_point) .否则 跳出循环 () .如果结束 .判断循环尾 () m_stack.destroy () LeaveCriticalSection_ (m_license) .子程序 free, , 公开 .参数 point EnterCriticalSection_ (m_license) .如果真 (取反 (m_stack.push (point))) _aligned_free (point) ' 入栈失败 栈存满了 直接释放 .如果真结束 LeaveCriticalSection_ (m_license) .子程序 alloc, 整数型, 公开 .局部变量 l_point, 整数型 EnterCriticalSection_ (m_license) l_point = m_stack.popup () .如果真 (l_point = 0) l_point = _aligned_malloc (m_unitSize, 4) ' 栈被取完 申请一段内存 临时顶替一下用 .如果真 (l_point = 0) ' 申请内存失败的处理 暂无 .如果真结束 .如果真结束 LeaveCriticalSection_ (m_license) 返回 (l_point)
相关文件下载地址
©下载资源版权归作者所有;本站所有资源均来源于网络,仅供学习使用,请支持正版!

易语言实现内存池源码》有0个想法

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注