首页 > 代码库 > DELPHI的 ShowMessage函数的小缺陷

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后,再去调用的时候发现内存无任何变化,所以最终我选择了这个函数。

DELPHI的 ShowMessage函数的小缺陷