ローカル変数のstring型が解放されるのはいつですか?

var
 P: Pointer;

procedure TForm1.Button3Click(Sender: TObject);
var
 S: string;
begin
 S := 'Delphi';
 P := Pointer(S);
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
 ShowMessage(string(P));
end;

Button3を押したあとButton4を押すと「Delphi」というメッセージが表示されます。
Button3Clickの中で解放されるものと思っていたのですが…