分析这三种方法:var pd: PDouble; begin New(pd); pd^ := 99.9; ShowMessage(FloatToStr(pd^)); {99.9} Dispose(pd); end;
var pd: PDouble; begin GetMem(pd, SizeOf(Double)); pd^ := 99.9; ShowMessage(FloatToStr(pd^)); {99.9} FreeMem(pd); end;
var pd: PDouble; begin ReallocMem(pd, SizeOf(Double)); pd^ := 99.9; ShowMessage(FloatToStr(pd^)); {99.9} FreeMem(pd); end;
New 方法申请的地址是独立的. 参见:
http://www.cnblogs.com/del/archive/2008/03/27/1125718.html
GetMem 方法只有每次申请的地址才是连续的. 参见:
http://www.cnblogs.com/del/archive/2008/03/27/1125778.html
如果需要多次申请并保证地址的连续性(地址连续了会方便管理, 从而提高速度), 应该使用 ReallocMem. 参见:
http://www.cnblogs.com/del/archive/2008/03/27/1126180.html
TList 类在给它的数组添加元素时就是使用 ReallocMem 来申请或分配内存的.