Piensa que las variables de los tipos simples (strings, enteros, booleanos,...) que defines, no las creas tu; Es decir nunca llamas a un constructor de un string.
Al definir esas variables, delphi las crea; Todas ellas tienen un "ambito de vida" donde están definidas. Cuando sales de ese ámbito delphi las destruye.
Si defines un entero en un procedimiento, cuando entras a ese procedimiento delphi se encarga de asignarle la memoria correspondiente a esa variable en la pila de llamadas (variables locales), al igual que hace con los parámetros o la dirección de retorno.
Cuando ese procedimiento finaliza, delphi libera esas posiciones de la pila, liberando la memoria que esas variables ocupaban.
En algunos casos las variables no se almacenan directamente en la pila, sino que ahí se guarda el apuntador a memoria donde se encuentra la variable, pero el sistema para liberar es el mismo (con una indirección más).