先定義一個結構:
TUserInfo = record
UserID: Integer; // 用戶編號
UserName: string; // 用戶名
end;
然後編寫如下代碼:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
User.UserName := StringOfChar('A', RandomRange(16*1024, 64*1024));
FillChar(User, SizeOf(User), 0);
end;
然後開啓設置Timer間隔爲20ms, 開啓任務管理器就會發現內存暴漲,很顯然結構中UserName使用的內存未被正確釋放。
改成下面的代碼就不會出現上述情況:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
User.UserName := StringOfChar('A', RandomRange(16*1024, 64*1024));
User.UserName := '';
end;