Trafiłem na taki problem:
Korzystając z ADO do łączenia z Accessową bazą danych pojawia się w pewnych sytuacjach 'wyciek' pamięci (testuję Memproofem)
konkretniej:
zapytanie.Close;
zapytanie.SQL.Clear;
zapytanie.SQL.Text:='SELECT Nazwa FROM nadzorowaniePlikow WHERE OID=0';
zapytanie.Open;
zapytanie.Close;
Działa bez problemów, natomiast:
zapytanie.Close;
zapytanie.SQL.Clear;
zapytanie.SQL.Text:='SELECT * FROM nadzorowaniePlikow WHERE OID<>0';
zapytanie.Open;
zapytanie.Close;
Powoduje już alokowanie pamięci na 'SysString' nie zwalniając jej po zniszczeniu zapytania.
Obiekty:
Connection := TADOConnection.Create(nil);
Connection.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=dane.mdb;Persist Security Info=False';
Connection.LoginPrompt := false;
Connection.Connected := true;
zapytanie := TADOQuery.Create(nil);
zapytanie.Connection := Connection;
Ktoś może spotkał się z podobnym problemem (rozwiązał go)?
EDIT:
Troche testowałem i wychodzi na to że ten wyciek jest zależny od ilości kolumn o które pytam, tzn jeśli pytam tak jak w pierwszym o jedną to nic złego się nie dzieje, jeśli natomiast pytam o więcej to pozostaje ilość_kolumn-1 niezwolnionych 'SysString'-ów.