ImageVerifierCode 换一换
格式:DOCX , 页数:5 ,大小:14.64KB ,
资源ID:24267003      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/24267003.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(内存池简单实例.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

内存池简单实例.docx

1、内存池简单实例内存池简单实例 分类: C/C+#include <stdlib.h>#include <stdio.h>#include <time.h>#include <iostream>using namespace std;class MemPool public: MemPool(); MemPool(); void* Alloc(); void Free(void* p); private: const static int blockSize = 1024; const static int itemSize = 16; struc

2、t ItemNode ItemNode *next; char dataitemSize - sizeof(ItemNode*); ; struct BlockNode BlockNode *next; ItemNode datablockSize/itemSize; ; ItemNode *freeItemNodeHead; BlockNode *memBlockNodeHead;MemPool:MemPool():memBlockNodeHead(NULL), freeItemNodeHead(NULL)MemPool:MemPool() BlockNode *temp = memBloc

3、kNodeHead; while(temp) memBlockNodeHead = memBlockNodeHead->next; delete temp; temp = memBlockNodeHead; void* MemPool:Alloc() if(freeItemNodeHead = NULL) BlockNode *tempBlockNode = new BlockNode; if(tempBlockNode = NULL) perror(allocate memory error!n); exit(1); if(memBlockNodeHead = NULL) memBlo

4、ckNodeHead = tempBlockNode; memBlockNodeHead->next = NULL; else tempBlockNode->next = memBlockNodeHead; memBlockNodeHead = tempBlockNode; freeItemNodeHead = &(memBlockNodeHead->data0); int i = 0; while(i < blockSize/itemSize -1) tempBlockNode->datai.next = &(tempBlockNode->

5、datai+1); +i; tempBlockNode->datai.next = NULL; ItemNode *allocItemNode = freeItemNodeHead; freeItemNodeHead = freeItemNodeHead->next; return allocItemNode;void MemPool:Free(void* p) ItemNode *tempItemNode = static_cast<ItemNode*>(p); tempItemNode->next = freeItemNodeHead; freeItemNod

6、eHead = tempItemNode;int main() MemPool pool; char *p = NULL; clock_t start, finish; double duration; long i = 0; start = clock(); while(i < 10000000) p = static_cast<char*>(pool.Alloc(); /p = new char16; +i; pool.Free(p); /delete p; finish = clock(); duration = (double)(finish - start)/CLOCKS_PER_SEC; cout << total use << duration << seconds << endl; system(pause); return 0;使用内存池的结果是:total use 0.245 seconds使用new,delete操作的结果是:total use 7.256 seconds结果相差近30倍,可见使用内存池对系统的性能有很大的提高MemPool实现源码参见:

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1