Delphi FastMM4作用(二)

对于FastMM4以往的认识,就是知道使用FastMM4之后会提示你是否有内存泄露,以及可以通过FullDebugMode来查找内存泄露的位置,从而可以消除内存的泄露。

使用FastMM4如果打开了‘FullDebugMode’则编译完成之后需要在exe或者dll旁边放置一个FastMM_FullDebugMode.dll,否则会出现运行不了的情况,在发布的服务程序时,这种情况更是比较常见,经常会出线使用不了的情况,自己还是一头雾水。

针对于FastMM4如何消除内存泄露的问题,前面介绍过,这部分内容,很多也有介绍,下面说一个我的最新认识。

由于FastMM4如此的好用,所以一般在我们的程序中都会使用,但是可能你不知道的是:谁最先使用的FastMM4会由他创建一个内存管理器,负责整个过程中的内存管理,但是一旦这个主程序被先释放了话,就会导致后面的过程中出现异常。

这么说可能都有些糊涂,举个例子:

写了一个Exe,使用了FastMM4,其中有一个方法,是加载一系列的dll(每个dll在编写的过程中也都是用了FastMM4)

procedure LoadDlls(AFilstList:TstringList)

var

  I: Integer;

  nHandle: LongWord;

begin

  for I := 0 to AFilstList.count - 1 do

  begin

      nHandle := LoadLibrary(AFilstList[I]);

      FDllList.add(nHandle);

  end;

end

这时候,由于主程序使用了FastMM4所以,主程序控制着所有的dll的内存,所以释放时,顺序释放就好,但是如果主程序没有使用FastMM4,这时候控制内存管理的是加载的第一个dll,所如果顺序释放就会出现内存混乱,需要倒序释放。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值