La respuesta es SI y NO.
En teoría, y en general en la práctica, al cerrar la aplicación se libera la porción de memoria asignada. Pero... (siempre hay peros) si haces empleos de punteros, debes liberar lo que haz pedido; es decir que por cada New() que hayas realizado, un Dispose() debe ser ejecutado.
Ahora bien, para mayor seguridad existe la sentencia CaFree. Que puede ejecutarse cuando se cierra el formulario. En el evento on Close() debes realizar esto:
Dicha sentencia permite (y se asegura) de que toda la memoria usada sea liberada (exceptuando los punteros).
Espero que te sirva de ayuda.