Delphi常用内存管理函数

1.New、Dispose、GetMem、FreeMem

New

procedure New(var P: Pointer);:创建一个新的动态变量,并把指针P指向这个新创建的变量。分配的内存大小由P指针表示的类型决定。

Dispose

procedure Dispose(var P: Pointer);:用来释放一指针变量所占用的内存地址。如使用{$I+},会产生一个EInvalidPointer异常。

Getmem

procedure GetMem(var P: Pointer; Size: Integer);:为一指针分配一定大小的地址空间。

FreeMem

procedure FreeMem(var P: Pointer[; Size: Integer]);:释放某一指针在内存中用的地址空间。

[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。

 

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
 
  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方法来释放空间

转载于:https://www.cnblogs.com/Little-Star/p/7524555.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值