小编Bit*_*ord的帖子

插入到sqlite db时发生错误时Delphi XE3中的内存泄漏

...
Query: TSQLQuery
...
    Query.SQL.Clear;
    Query.SQL.Add('INSERT INTO pumps'#13#10 +
                       'VALUES (NULL, :title, :power)');
    Query.ParamByName('title').AsString:= title;
    Query.ParamByName('power').AsFloat:= power;
    try
      Query.ExecSQL;
    except
      on E: Exception do
        begin
          ShowMessage(E.Message);
        end;
    end;
Run Code Online (Sandbox Code Playgroud)

查询通过driver = Sqlite链接到SQLConnection.所有操作都可以正常工作,但是当我尝试将非唯一值插入到具有唯一索引的列中时,我会得到有关值存在的异常.好的,我的代码捕获它并显示消息'列标题不唯一',但在调试器显示异常TWICE之前.当我关闭程序时,内存管理器会告诉内存泄漏,泄漏是:

  • 21 - 28字节:UnicodeString x 4
  • 61 - 68字节:TDBXSqliteCommand x2
  • 69 - 76字节:TDBXMorphicCommand x 2
  • 221 - 236字节:未知x 2

有可能避免这种情况吗?

UPD:我使用FastMM4来获取详细的日志,下面是关于一个内存泄漏的部分:

A memory block has been leaked. The size is: 68

This block was allocated by thread 0xB18, and the stack trace (return addresses) at the time was:
4068A6 [System.pas][System][@GetMem$qqri][4203] …
Run Code Online (Sandbox Code Playgroud)

delphi sqlite

6
推荐指数
1
解决办法
906
查看次数

标签 统计

delphi ×1

sqlite ×1