Si tratta di una problematica spinosa.

Innanzitutto, va detto che il Task Manager non è così affidabile nella misurazione della memoria effettiva occupata; inoltre, Windows contiene i propri algoritmi di pulizia della memoria e l'applicazione include codice VCL che esegue diverse operazioni in grado di variare la memoria occupata in base - ad esempio - agli elementi visibili sullo schermo.

In definitiva, senza uno strumento di "profiling" avanzato, non darei eccessivo affidamento alla precisione del Task Manager.

Da quanto hai scritto, sembra che le form a cui ti riferisci venga utilizzati solamente come modali: questo significa che vengono aperte al momento giusto, utilizzate e poi chiuse, prima di ritornare al programma principale (o alla routine chiamante in questione).

Secondo me, è inutile porre tali form in Auto create poichè non ha senso "prenotare" e occupare spazio in memoria per finestre che verranno visualizzate solo in seguito, oppure mai. E' possibile creare le finestre quando serve visualizzarle, mostrarle a video con il metodo ShowModal e distruggerle quando queste vengono chiuse, garantendo il rilascio delle risorse occupate attraverso il costrutto try...finally.

In poche parole, suggerisco la loro rimozione dall'elenco di form poste in Auto create; per crearle, visualizzarle e distruggerle userei un costrutto di questo tipo:
codice:
  AForm := TForm.Create(nil);
  try
    AForm.ShowModal;
  finally
    AForm.Free;
  end;
(ho scritto in Delphi perchè non sopporto l'intricata sintassi del C++)

Sostanzialmente, utilizzi una variabile locale avente lo stesso tipo del form da creare; attraverso il costruttore Create istanzi una nuova form, la visualizzi con il metodo ShowModal e, quando questa viene chiusa, liberi la memoria allocata chiamando il metodo Free. Non è richiesto nient'altro.

Ovviamente, il tuo codice deve essere ben organizzato per poter utilizzare con successo questo approccio; ad esempio, se nella tua classe o in altri punti del codice dell'applicazione hai fatto esplicito riferimento alla variabile creata automaticamente in ogni modulo che identifica la form, nel peggiore dei casi anche nel codice della form stessa, dubito che ti riuscirà il gioco.

Questo è comunque il modo più corretto di procedere per il rilascio di ogni risorsa in genere; non sono consapevole di altre istanze o strutture dati in genere che crei nel resto dell'applicazione, quindi non posso garantirti che siano a prova di "memory leak", ma per questo puoi controllare tu.

Ciao!