zoukankan      html  css  js  c++  java
  • EhLib的内存泄漏

    EhLibADO,

    initialization
      RegisterDatasetFeaturesEh(TADOSQLDatasetFeaturesEh, TADOQuery);
      RegisterDatasetFeaturesEh(TADOCommandTextDatasetFeaturesEh, TCustomADODataSet);

    EhLibCDS

    initialization
    {$IFDEF EH_LIB_6}
      RegisterDatasetFeaturesEh(TCDSDatasetFeaturesEh, TCustomClientDataSet);
    {$ELSE}
      RegisterDatasetFeaturesEh(TCDSDatasetFeaturesEh, TClientDataSet);
    {$ENDIF}

    居然没有UnRegisterData……看来EhLib团队也有菜鸟

    移植到DLL中,退出EXE报AV错误,原因是这里没有UnRegister

    修改后用FastMM4发现有内存泄漏

    查看RegisterDatasetFeaturesEh发现

    procedure RegisterDatasetFeaturesEh(DatasetFeaturesClass: TDatasetFeaturesEhClass;
      DataSetClass: TDataSetClass);
    var
      DatasetFeatures: TDatasetFeaturesEh;
      ClassIndex: Integer;
    begin
      DatasetFeatures := DatasetFeaturesClass.Create;
      DatasetFeatures.FDataSetClass := DataSetClass;
      if DatasetFeatures.FDataSetClass = nil then
        Exit;   //既然等Nil,何必要去创建(DatasetFeatures)……
      ClassIndex := DatasetFeaturesList.IndexOf(DatasetFeatures.FDataSetClass.ClassName);
      if ClassIndex >= 0
        then DatasetFeaturesList.Objects[ClassIndex] := DatasetFeatures    //如果已经有了之前那个对象怎么办……
        else DatasetFeaturesList.AddObject(DatasetFeatures.FDataSetClass.ClassName,
                DatasetFeatures);
    end;

    //还好提供源码。修正后,没有问题了

  • 相关阅读:
    一种循环方式
    SqlServer循环读取配置
    app抓包
    c# 前端写代码的情况
    第36月第27日 codesign重签名
    第36月第26天 吴恩达 目标检测
    第36月第25天 TensorFlow Object_detection
    第36月第19天 多个tomcat查端口
    第36月第8天 flask_bootstrap
    第36月第5天 升级到 XCode10.3 项目中的xib报错
  • 原文地址:https://www.cnblogs.com/DKSoft/p/2027304.html
Copyright © 2011-2022 走看看