关于内存分配的胡思乱想

firstshine 2003-08-23 08:56:45
系统分配内存的时候,是连续分配的,例如:
var
a:Array of Integer;
begin
SetLength(a,10);
end;
以上代码段中,系统将(从堆中?)分配10*SizeOf(Integer)=40个字节,从以下代码段可以得到验证:
var
a:Array of Integer;
i:Integer;
begin
SetLength(a,10);
for i:=Low(a) to High(a) do ShowMessage(IntToStr(Integer(@a[i])));
end;

就像硬盘中存放的文件类似,假定系统依次为程序分配的内存空间是连续的(即使不连续也没关系),当程序释放某些变量所占用的内存空间的时候,是不是会在内存空间中造成一系列大小不一的碎片?如果是,在某些极端的情况下,会不会造成系统还有大量的内存,却造成了程序无法申请到内存?例如,系统还有200KB的未分配内存空间,但是都是一些小碎片,最大的连续的未分配空间只有100字节,这时如果我执行一条SetLength(a,200)会不会出错?不知道系统有没有内存碎片整理机制?
...全文
28 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
flyingworm 2003-08-25
  • 打赏
  • 举报
回复
看看os方面的书,说不定有所启发.(^_^)
microjuz 2003-08-23
  • 打赏
  • 举报
回复
对于碎片的管理,我依稀还记得有许多算法,各有优缺点
dext 2003-08-23
  • 打赏
  • 举报
回复
操作系统的储存管理就是干这个的!
第1章 特点和功能•限制 ................................................................................................................1-1 1.1 单元的特点和功能 ................................................................................................................................1-2 i ii iii iv 1.2 单元的种类 ...........................................................................................................................................1-5 1.2.1 FP-X控制单元 ............................................................................................................................. 1.2.2 FP-X扩展单元 ............................................................................................................................. 1.2.3 FP-X扩展FP0适配器 ................................................................................................................... 1.2.4 扩展插件(通信插件/功能插件)....................................................................................................... 1.2.5 相关部件 ........................................................................................................................................ 1.3 单元组合的限制 .................................................................................................................................... 1.3.1 FP-X扩展单元的限制 .................................................................................................................. 1.3.2 FP0扩展单元的限制 ...................................................................................................................... 1.3.3 使用FP-X 扩展插件情况下的限制 .............................................................................................. 1.4 编程工具 ............................................................................................................................................ 1.4.1 编程需要的工具 ........................................................................................................................... 1.4.2 软件使用环境以及适用电缆 ...............................

5,379

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧