- 1、本文档共34页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第 7 章
Delphi 的内存管理器
最小化内核中并不包含内存管理器,这表明使用最小化内核开发应用程序,与使
用汇编一样 “原始”:需要使用标准的Win32 API 来分配、使用和管理内存块。但是这
通常会存在效率问题,也可能会导致内存漏洞。
如果代码中使用到需要动态内存的数据类型,那么这些数据类型的内部例程将访
问Delphi 的内存管理器。这些数据类型中就包括了 AnsiString。这意味着绝大多数
的Delphi 程序都需要内存管理器。
除了缺省的内存管理器外,Delphi 还实现了 ShareMem.pas 和相应的内存管理模
块 borlndmm.dll ,以同步DLL 与HOST 程序中的内存管理器。
与缺省的内存管理器一样,共享内存管理器(borlndmm.dll) 并不是最有效率的。因
此某些时候,选择第三方的内存管理器可能会得到更好的性能。
开发人员随时可以写一个内存管理器来嘲笑一下那个叫 borlndmm.dll 的东西。但
在开始动手之前,请确认你已理解本章所述的全部细节,否则你可能不得不面对一次
次的进程崩溃,并无可奈何地在 uses 关键字的后面加入 ShareMem。
知己知彼,才能无往不利。否则,笑到最后的还会是 Borland 。
7.1 Delphi 的内存管理器实现框架
Delphi 在 GetMem.inc 中实现了自己的内存管理器。对于应用程序模块来说,除了变量、
常量和系统内存的数据结构之外,其他任何时候的内存分配行为,只可能是如下三种情况之一:
通过操作系统 API 进行的进程内内存分配。
使用 Delphi 内存管理例程进行的堆分配。
Delphi 源代码分析
·170 · 第 7 章 Delphi 的内存管理器
①
通过汇编指令或者局部变量定义进行的栈分配 。
通过操作系统 API 进行的内存分配主要有虚地址内存分配和堆分配。前者是指使用 API :
VirtualAlloc()进行的分配,后者是指用 API :HeapAlloc()进行的分配。
Delphi 内存管理例程中的所谓“堆分配”,与操作系统中的“堆”概念并不一致。Delphi 中
指的是使用“堆”这种数据结构进行内存管理的方法,而操作系统中指的是一个堆内存区。②
在 GetMem.inc 中,Delphi 封装了操作系统 API ,使得用户可以直接分配内存,而无须考
虑内存具体在哪个虚地址空间、或者内存页中。
使用 Delphi 的开发人员不必了解任何有关操作系统内存分配的细节。对于这些开发者来说:
任何一块(既定长度的) 内存都是连续的,可以通过字节序遍历一个数据结构,或者在长度边界相
容的情况下进行强制转换。
Delphi 通过图 7.1 所示的内存管理器框架对 API 实行封装:
用户代码层 System.pas MemMgr(域) GetMem.inc Win32 API
GetMem() _GetMem() GetMem SysGetMem()
New() _ New()
用 Win32 API
分配 内存,并
FreeMem() _ FreeMem() FreeMem SysFreeMem() 使用 “堆”这
种数据结构进
Dispose() _Dispose()
您可能关注的文档
- 工程经济学第五篇.pdf
- C与C++招待所.doc
- 工程类科技英语的有效学习方法及翻译技巧分析.pdf
- C语结构体及联合体.ppt
- 工程力学第16篇(压杆稳定问题).ppt
- C语言(第7节函数).ppt
- C语言N08 编译预处理、位运算及文件 2学时+2学时.ppt
- C语言程序设计 第六章 函数 试题和答案.doc
- 工程制图第2篇点线面.ppt
- C语言程序设计 清华大学课件 第8篇 函数2.ppt
- GB/T 32151.38-2024温室气体排放核算与报告要求 第38 部分:水泥制品生产企业.pdf
- 中国国家标准 GB/T 32151.38-2024温室气体排放核算与报告要求 第38 部分:水泥制品生产企业.pdf
- 《GB/T 22069-2024燃气发动机驱动空调(热泵)机组》.pdf
- GB/T 22069-2024燃气发动机驱动空调(热泵)机组.pdf
- 中国国家标准 GB/T 22069-2024燃气发动机驱动空调(热泵)机组.pdf
- 中国国家标准 GB/T 11064.1-2024碳酸锂、单水氢氧化锂、氯化锂化学分析方法 第1部分: 碳酸锂含量的测定 滴定法.pdf
- GB/T 11064.1-2024碳酸锂、单水氢氧化锂、氯化锂化学分析方法 第1部分: 碳酸锂含量的测定 滴定法.pdf
- 《GB/T 11064.1-2024碳酸锂、单水氢氧化锂、氯化锂化学分析方法 第1部分: 碳酸锂含量的测定 滴定法》.pdf
- GB/T 1148-2024内燃机 铝活塞.pdf
- 中国国家标准 GB/T 1148-2024内燃机 铝活塞.pdf
文档评论(0)