Delphi經常使用內存管理函數

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

[delphi]  view plain  copy
 
  1. procedure TForm1.ButtonClick1(Sender: TObject);  
  2. var  
  3.     P:PString;  
  4. begin  
  5.     getmem(p,1256);  //爲指針分配指定內存大小的指針  
  6.     p^:='MingRiSoft';  
  7.     edit1.Text := p^;  
  8.     dispose(p);     //釋放指針地址  
  9.     edit2.Text := P^;  
  10. end;  

在建立指針和分配內存地址時,優先使用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。

[delphi]  view plain  copy
 
  1. procedure TForm1.Button1Click(Sender:TObject);  
  2. var  
  3.     i : Pshortstring;  
  4. begin  
  5.    i:= AllocMem(256);  //在堆中分配內存  
  6.    i^ := 'aaa';  
  7.    ReallocMem(i,256);  //從新分配內存  
  8.    SysFreeMem(i);      //釋放內存  
  9. end;  

 

3. 其它內存函數

SysReallocMem

function SysReallocMem(P: Pointer; Size: Integer): Pointer;:用於從新爲變量分配內存區域。主要用於調節動態分配內存的空間大小。

Finalize

procedure Finalize( var V [; Count: Integer] );:用來動態分配變量的內存地址,這些分配的內存空間由其它方法而不是Dispose方法來釋放空間

相關文章
相關標籤/搜索