1.New、Dispose、GetMem、FreeMem函數
Newspa
procedure New(var P: Pointer);:建立一個新的動態變量,並把指針P指向這個新建立的變量。分配的內存大小由P指針表示的類型決定。.net
Dispose指針
procedure Dispose(var P: Pointer);:用來釋放一指針變量所佔用的內存地址。如使用{$I+},會產生一個EInvalidPointer異常。orm
Getmemblog
procedure GetMem(var P: Pointer; Size: Integer);:爲一指針分配必定大小的地址空間。ip
FreeMem內存
procedure FreeMem(var P: Pointer[; Size: Integer]);:釋放某一指針在內存中用的地址空間。get
在建立指針和分配內存地址時,優先使用New和Dispose。string
2.AllocMem、ReallocMem、SysFreeMem
AllocMem
function AllocMem(Size: Cardinal): Pointer;:用於在堆中分配一塊內存區域,並初始化每一字節爲0。其返回值爲一個指向堆中已分配內存的指針。
RellocMem
procedure ReallocMem(var P: Pointer; Size: Integer);:用於從新分配一個動態變量。這裏須要討論幾種狀況:
一、若是P爲nil而且Size爲0,則RellocMem不分配內存;
二、若是P爲nil但Size不爲0,則RellocMem分配內存的過程等同於GetMem;
三、若是P不爲nil但size爲0,則RellocMem將地址引到P並並設置P爲nil。則此過程就相似於FreeMem的操做。
SysFreeMem
function SysFreeMem(P: Pointer): Integer;:釋放指針指向的內存空間。其返回值爲0;不然返回非0。
3. 其它內存函數
SysReallocMem
function SysReallocMem(P: Pointer; Size: Integer): Pointer;:用於從新爲變量分配內存區域。主要用於調節動態分配內存的空間大小。
Finalize
procedure Finalize( var V [; Count: Integer] );:用來動態分配變量的內存地址,這些分配的內存空間由其它方法而不是Dispose方法來釋放空間