没有合适的资源?快使用搜索试试~ 我知道了~
首页侯捷详解:内存池设计哲学与无痛应用
侯捷详解:内存池设计哲学与无痛应用
需积分: 31 17 下载量 162 浏览量
更新于2024-07-21
1
收藏 425KB PDF 举报
"《Memory Pool的设计哲学和无痛运用》是由侯捷先生撰写的一篇关于内存管理的专业文章,发表于2002年的《程序员》和《Run!PC》杂志上。侯捷是一位经验丰富的计算机技术作家,他的作品深入浅出,适合有一定C++编程经验的读者阅读。本文主要探讨了Memory Pool(内存池)的设计理念及其在实际编程中的应用,特别是在SGI STL中的内存管理。 内存池是一种高效内存分配策略,它预先在系统中预留一组连续的内存块,当程序需要内存时,直接从池中获取,用完后归还给池,而不是每次都通过操作系统调用动态内存分配函数。这种设计有助于减少内存碎片,提高内存利用效率,并简化了客户端代码,使其无需频繁地处理内存分配和释放操作,从而减少了内存管理的复杂性和错误。 文章中,侯捷详细解析了SGI STL中内存块的分配和释放机制,特别是对块卸除(归还)的动作进行了分析,指出了其中的优缺点,并提出改进方法。他还比较了不同编译器在内存块配置方面的性能,帮助读者了解如何根据实际情况选择最佳实践。 此外,文章还回顾了早期计算机时代对内存资源的极度重视,以及MS-DOS 5.0引入的UMB和HMA技术,这些都为理解内存池的必要性提供了历史背景。随着虚拟内存系统的普及,尽管内存不再是稀缺资源,但内存池的理念仍然在现代编程中扮演着重要角色,尤其是在大型软件项目和性能敏感的应用中。 《Memory Pool的设计哲学和无痛运用》是一篇实用且深入的教程,不仅阐述了内存池的设计原理,还提供了将其应用于实际项目的方法,对于C++开发者理解和优化内存管理具有很高的参考价值。"
资源详情
资源推荐
![](https://csdnimg.cn/release/download_crawler_static/9082765/bg6.jpg)
池內春秋— Memory Pool 的設計哲學和無痛運用
侯捷觀點
6
同時並觀察數個連續動態配置的區塊是否完全緊鄰?亦或㆗間有些縫隙 ?縫隙的
大小是否剛好
4bytes
?
㆘面這段程式碼刻意安排特定的物件大小,然後動態配置 它們(並建構之),然
後列印其前㆕個
bytes
,觀察其內數值,印證是否和區塊的大小相同。最後並觀察
這些區塊的起始位址。由於只做簡單觀察之用,所以編程手法直觀而不講究。
// 動態配置記憶體
C1* pc1 = new C1; // size:16
C1* pc12 = new C1; // size:16
C1* pc13 = new C1; // size:16
C2* pc2 = new C2; // size:14
C3* pc3 = new C3; // size:24
C4* pc4 = new C4; // size:160
int* pi = new int[10]; // size:40
// 列印每個區塊之前的㆕個 bytes
unsigned char* pc1c = (unsigned char*)pc1;
unsigned char* pc12c = (unsigned char*)pc12;
unsigned char* pc13c = (unsigned char*)pc13;
unsigned char* pc2c = (unsigned char*)pc2;
unsigned char* pc3c = (unsigned char*)pc3;
unsigned char* pc4c = (unsigned char*)pc4;
unsigned char* pic = (unsigned char*)pi;
printf("%d,%d,%d,%d \n", *(pc1c-4), *(pc1c-3), *(pc1c-2), *(pc1c-1) );
printf("%d,%d,%d,%d \n", *(pc12c-4), *(pc12c-3), *(pc12c-2), *(pc12c-1) );
printf("%d,%d,%d,%d \n", *(pc13c-4), *(pc13c-3), *(pc13c-2), *(pc13c-1) );
printf("%d,%d,%d,%d \n", *(pc2c-4), *(pc2c-3), *(pc2c-2), *(pc2c-1) );
printf("%d,%d,%d,%d \n", *(pc3c-4), *(pc3c-3), *(pc3c-2), *(pc3c-1) );
printf("%d,%d,%d,%d \n", *(pc4c-4), *(pc4c-3), *(pc4c-2), *(pc4c-1) );
printf("%d,%d,%d,%d \n", *(pic -4), *(pic -3), *(pic -2), *(pic -1) );
// 列印每㆒區塊的起始位址
printf("%p %p %p %p %p %p %p \n", pc1,pc12,pc13,pc2,pc3,pc4,pi);
圖㆕是以㆖片段的某次執行結果。我們看到
C++Builder5
在這方面的表現最為「㆗
規㆗矩」,完全符合我們的預期,不僅
cookie
記錄「正確」,每個區塊的距離也
恰恰是區塊大小加㆖
4
(
cookie
大小)。
GCC
產生的每個
cookie
記錄的似乎都是
區塊實際大小加㆖
1001
(㆓進制),像是某種神秘標記;每個區塊距離則是區塊
大小加㆖
8
,但也有例外(紅色標示)。
VC6
產生的每個
cookie
以及區塊的距離
最難推斷規律性,並且也有 十分離奇的現象(紅色 標示)。這些離奇現象其實不
剩余26页未读,继续阅读
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://profile-avatar.csdnimg.cn/128575029d1e4c73bd7ae3d2c8300763_zjs342.jpg!1)
猪叫兽
- 粉丝: 2
- 资源: 2
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
最新资源
- 计算机人脸表情动画技术发展综述
- 关系数据库的关键字搜索技术综述:模型、架构与未来趋势
- 迭代自适应逆滤波在语音情感识别中的应用
- 概念知识树在旅游领域智能分析中的应用
- 构建is-a层次与OWL本体集成:理论与算法
- 基于语义元的相似度计算方法研究:改进与有效性验证
- 网格梯度多密度聚类算法:去噪与高效聚类
- 网格服务工作流动态调度算法PGSWA研究
- 突发事件连锁反应网络模型与应急预警分析
- BA网络上的病毒营销与网站推广仿真研究
- 离散HSMM故障预测模型:有效提升系统状态预测
- 煤矿安全评价:信息融合与可拓理论的应用
- 多维度Petri网工作流模型MD_WFN:统一建模与应用研究
- 面向过程追踪的知识安全描述方法
- 基于收益的软件过程资源调度优化策略
- 多核环境下基于数据流Java的Web服务器优化实现提升性能
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)