1.new、dispose、getmem、freemem
newprocedure new(var p: pointer);:建立乙個新的動態變數,並把指標p指向這個新建立的變數。分配的記憶體大小由p指標表示的型別決定。
dispose
procedure dispose(var p: pointer);:用來釋放一指標變數所占用的記憶體位址。如使用,會產生乙個einvalidpointer異常。
getmem
procedure getmem(var p: pointer; size: integer);:為一指標分配一定大小的位址空間。
freemem
procedure freemem(var p: pointer[; size: integer]);:釋放某一指標在記憶體中用的位址空間。
[delphi]view plain
copy
procedure
tform1
.buttonclick1(sender: tobject);
varp:pstring;
begin
getmem(p,1256
);
//為指標分配指定記憶體大小的指標
p^:='mingrisoft'
; edit1.
text := p^;
dispose(p); //釋放指標位址
edit2.
text := p^;
end;
在建立指標和分配記憶體位址時,優先使用new和dispose。
2.allocmem、reallocmem、sysfreemem
allocmem
function allocmem(size: cardinal): pointer;:用於在堆中分配一塊記憶體區域,並初始化每一位元組為0。其返回值為乙個指向堆中已分配記憶體的指標。
rellocmem
procedure reallocmem(var p: pointer; size: integer);:用於重新分配乙個動態變數。這裡需要討論幾種情況:
1、如果p為nil並且size為0,則rellocmem不分配記憶體;
2、如果p為nil但size不為0,則rellocmem分配記憶體的過程等同於getmem;
3、如果p不為nil但size為0,則rellocmem將位址引到p並並設定p為nil。則此過程就類似於freemem的操作。
sysfreemem
function sysfreemem(p: pointer): integer;:釋放指標指向的記憶體空間。其返回值為0;否則返回非0。
[delphi]view plain
copy
procedure
tform1
.button1click(sender:tobject);
vari : pshortstring;
begin
i:= allocmem(256
);
//在堆中分配記憶體
i^ := 'aaa'
; reallocmem(i,256
);
//重新分配記憶體
sysfreemem(i); //釋放記憶體
end;
3. 其它記憶體函式
sysreallocmem
function sysreallocmem(p: pointer; size: integer): pointer;:用於重新為變數分配記憶體區域。主要用於調節動態分配記憶體的空間大小。
finalize
procedure finalize( var v [; count: integer] );:用來動態分配變數的記憶體位址,這些分配的記憶體空間由其它方法而不是dispose方法來釋放空間。
delphi常用函式
1 生成指定個數字元的字串 stringofchar s 10 得到 ssssssssss 2 填充字元陣列 s array 0.79 of char fillchar s,sizeof s ord 這樣可以清空s陣列 3 刪除字串中指定的字串 delete s,16,1 功能說明 該函式有三個引數...
Delphi記憶體管理與記憶體洩漏探析
delphi記憶體管理與記憶體洩漏探析 楊繼巨集,龔 暉,李 治 摘引言 delphi是borland公司的劃時代之作,以其功能強大且易學 好用而受到廣大程式設計師的青睞。關於delphi的文章很多,大多數是討論其生產的高效率 各種應用的快速實現,卻忽視了乙個基本卻非常重要的問題記憶體動態 分配與安...
delphi 自定義記憶體管理
1.主要通過getmemorymanager來hook原來的記憶體管理。2.通過setmemorymanager來設定你自己的新的記憶體管理,可以用乙個記憶體池來優化和管理程式的記憶體呼叫情況。procedure registermemmgr varamgr tmemorymanagerex beg...