Pues la teoría dice que sí que se destruye al ser local. De lo que no estoy tan seguro es si también se libera si se produce un error. Por eso, lo que yo hago en esos casos es asegurarme de su liberación con un try...finally
Código:
qConsulta:=TIBQuery.Create(Self);
try
qConsulta.Databasename:=dm.DB;
qConsulta.Transaction:=dem.DefTrans;
...
Utilización del qConsulta
...
qConsulta.Close
finally
FreeAndNil(qConsulta);
end;
Total, por las pocas lineas de código que son.... mejor asegurarse, no?