D2010、Win7 64bit。 こんにちは、Delphi - TDataSetからメモリを解放するには?
は、私は別のルーチン... GetDBGenericDataにオープンしたTDataSetのを処理する必要があるとbuttonClickイベントを持っています。
関数GetDBGenericDataは、TDataSetを返します。このルーチンは、基本的にtQueryコンポーネントをとり、SQLプロパティを設定して開きます。次にTDataSetをbuttonclickに返します。
procedure TForm1.Button2Click(Sender: TObject);
var
DS : TDataSet;
begin
DS := TDataSet.Create(nil);
DS := GetDBGenericData(dbSOURCE, 'LIST_ALL_SCHEMAS', []);
while Not DS.EOF do
begin
ShowMessage(DS.FieldByName('USERNAME').AsString);
DS.Next;
end;
DS.Close;
DS.Free;
私の問題は - DSの理解です。 私はここでこのルーチンで作成しています。私はそれをコンポーネントを指すTDataSetに「割り当てる」。私がそれを解放しないと、私はメモリリークを持っています(EurekaLogによって報告されたように)。 私が自由にすると、次回このルーチンを実行するときにAVを取得します。 (具体的にはGetDBGenericDataルーチンの内部)。
私は、DSが返されているTDataSetに割り当てられているので、実際にはこのルーチンでDSを解放していますが、GetDBGenericDataのtQueryでは私は無料です。
どのようにリンケージを「中断」し、動的に作成しているメモリだけを削除しますか。
おかげで、 GS
それは...ありがとうございました。 – user1009073