DELPHI的 ShowMessage函数的小缺陷

今天我在XE7的IDE下调试我自己的LUA的时候发现个有意思的事情

我在LUA里调用一个DELPHI里绑定的函数 这个函数的原形如下

function lua_ShowMessage(l : PLua_State) : integer; cdecl;
var
  n, i : Integer;
  msg : AnsiString;
begin
  result := 0;
  n := lua_gettop(l);
  if n > 0 then
  begin
    msg := '';
    for i := 1 to n do
      msg := msg + lua_tostring(L, i);
    ShowMessage(string(msg));
  end;
end;

然后经常多次调用后 内存每次调用都以40多K的速度往上涨,停下来一会后 内存慢慢恢复,关键是内存能恢复到一定的程度,但永远无法恢复到调用之前的状态,所以给我的感觉就像内存泄露,具体是不是泄露也得找个时间用FASMM4试试。

一开始不明白为什么会内存变化这么大,后来尝试将

ShowMessage 换成了MessageBoxA后,再去调用的时候发现内存无任何变化,所以最终我选择了这个函数。

posted on 2014-11-22 03:59  嗟夫  阅读(835)  评论(0编辑  收藏  举报

导航