title: Object's members' values change as soon as interrupt is fired
body: <p>I have a UART class that has instances of <code>Fifo</code>. What I notice is as soon as the UART IRQ handler is fired, the member variables of <code>Fifo</code> instance change. I can't think of putting breakpoint any further because things seem perfectly fine inside <code>Uart::init()</code>...and the next thing to happen is the IRQ handler.</p>
  <pre class="lang-c prettyprint-override"><code>// uart.hpp
  class Uart 
  {
    Fifo rx;
    Fifo tx;
    public:
    void init();
    void irqHandler();
  };
  
  // uart.cpp
  static Uart *pUart;
  
  void Uart::init() 
  {
    pUart = this;
    // verified Uart::rx's members are as expected
    // ...
  }
  
  void IRQ_Handler(void) 
  {
    pUart-&gt;irqHandler();
  }
  
  void Uart::irqHandler() 
  {
      // Uart::rx members seem to have changed here...
  }
  
  int main(void) 
  {
    Uart uart;
    uart.init();
    while(1);
  }
  </code></pre>