【发布时间】:2014-05-28 15:56:01
【问题描述】:
我有这段代码
TSql = class
private
FConnString: TStringList;
public
property ConnString: TStringList read FConnString write FConnString;
constructor Create;
destructor Destroy;
end;
var
Sql: TSql;
...
implementation
{$R *.dfm}
constructor TSql.Create;
begin
//inherited Create;
FConnString:=TStringList.Create;
end;
destructor TSql.Destroy;
begin
FConnString.Free;
//inherited Destroy;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Sql.Create;
Sql.ConnString.Add('something');
showmessage(Sql.ConnString.Text);
Sql.Destroy;
end;
为什么在创建 FConnString 时,按下按钮后会造成内存泄漏?
....................... ..................................... ..................................... ....................................
【问题讨论】:
-
让我展开。如果您能够正确调用 Sql.Create,则您已经拥有 Tsql 的有效实例。当您在其上调用 Create 时,它会创建另一个 FConnString。 IOW,删除那条线,你会没事的。
-
应该是
Sql := TSql.Create;? -
是的……我的错。你是对的!有用!无论如何,我的真实代码仍然存在问题。我会更深入地搜索。在我的原始代码中使用 Sql:=TSql.Create 但仍然有问题。
-
我回滚了这个问题。瞄准移动的目标并不好玩。
-
那个全局变量让我感觉不舒服
标签: class delphi memory-leaks tstringlist