Looping Back to setup after void loop() has run a random number of times

I'm sorry I had it backwards, as if you wanted to invoke a random re-setup behavior.

One thing that causes a reset is executing a null function, and these pointer assignments look a little suspicious. What are you trying to do here?

I think 'temperature' might be zero or junk, and temperature.temperature might be something unexpected. Are you sure you are using all the references and pointers correctly?