btw programming an embedded processor such as Arduino with limited RAM is very different from writing C++ programs for a PC. The main difference is that you should avoid using dynamic memory allocation. See Escher Technologies Articles on Formal Verification> for why. So no use of 'new' , 'delete', 'malloc', 'free' etc. (you can use 'new' and 'malloc' in the startup phase only if you like), and most of the STL is not available or out of bounds. And no strings (ignore the String class in the Arduino library), use arrays of char instead.