That's the fun with C, it would be quite unlikely the malloc call in a unit test for this didn't happen to zero initialize the struct.
Yep. You may get different results based on the code path taken, the compiler, and (maybe?) the OS. Most of the time the value at that memory location will probably be a zero byte (or a zero word/dword), but sometimes it may not.