could swear I've had some debugging / system testing sessions where the effect of me looking into it changed its state :-)
Calling printf can (will) change what's beyond the stack of the calling function, so if the pointer in question pointed outside the active stack, printf may have put a safer value there by coincidence.
methods of disassociating mutable objects before printing will save you from some heisenbugs
a la javascript
console.log(JSON.parse(JSON.stringify(obj))