As described in the comments: Your local struct variable probably always is placed in the same space in memory and this part of the memory isn't overwritten by your program. When declaring local variables they are not implicitly initialized (written with a value). If you don't initialize the variable yourself, its value will be whatever data is currently in that memory space.
The compiler optimizes your code and also decides on where to place variables on the stack. In this case it is always placed at the same memory space, but you cannot count on that. It is undefined behavior and any change to your program can also change that fact. And you don't have any control over that.
This is the reason, why you should always initialize local variables before reading them.
what do you recommend ?
Just initialize the members of that struct variable before using them. Set all valuesmembers to a value. You can even do that in one step together with declaring it:
RFmsg _payload = {1, 2, 3, "payload", "devname"};