delphi 2010 的内存管理 对 delphi 7 的内存管理进行了改善.
下面这段代码 在两个编译器下均能正常运行, 但是我们发现 , delphi 2010 可以申请更多的内存.
---- 测试环境 : windows 7.0
procedure TForm1.Button3Click(Sender: TObject);
const nm = 1024*1024*500;
Type
TAA = packed array[1..nm] of byte;
PAA = ^TAA;
var A:array[1..4] of PAA;
i,n:integer;
begin
for I := 1 to 4 do
begin
try
A[i]:=nil;
getmem( A[i] , sizeof( TAA));
except
on E:Exception do
memo1.Lines.Add( e.Message) ;
end;
memo1.Lines.Add( format('%p',[A[i]])) ;
end;
showmessage('OK');
for I := 1 to 4 do
begin
if (A[i]<>nil) then
begin
freemem( A[i] );
end;
end;
end;
delphi 7 编译的程序之运行结果 :
10090004
Out of memory
00000000
Out of memory
00000000
Out of memory
00000000
// delphi 2010 编译的程序之运行结果 :
40D10010
21900010
Out of memory
00000000
Out of memory
00000000