Für LockRect musst du nach dem Kopieren der Daten einmalig Unlock aufrufen. Die ganzen Interfaces brauchst du nicht manuell freizugeben (macht Delphi automatisch, sobald die letzte Referenz entfernt wurde, also in deinem Falle, wenn du aus dem Scope deiner Subroutine läufst).
Jo das hast du doch schon oder?
Trotzdem wird der Speicher immer weiter Vollgeschaufelt.
Starte mal das teil und schau im Taskmanager
gruss