Thanks, but note that your last test is not guaranteed to always succeed.
You're checking that some value is not found on stack, and trying to prevent leftover stale values on stack to make the test pass.
Most times this will likely work, but you can't 100% guarantee that some value will not be present on the stack, and if it does your test will flakily fail.
This could happen if e.g. a pointer somehow leaks to stack unexpectedly (stale value, some compiler optimization, etc...) or just a random false positive (i.e. the address of your object randomly appearing on stack regardless of any actual pointers to it).