The compiler does this for you in debug mode, so that if you accidentally read uninitialized memory, you'll see the distinctive 0xCC value, and recognize that you (probably) read uninitialized memory. The 0xCC value has a lot of other useful properties, for example it is the machine language instruction for invoking a software breakpoint should you accidentally execute some uninitialized memory.
The basic principle: make it easy to identify values that come from reading uninitialized memory.
This doesn't happen in your release builds.
This technique was introduced in Writing Solid Code.