Check your compiler documentation. A conforming C or C++ compiler is required to initialize all elements to 0
but some compilers, particularly in the embedded world, have non-ISO options (sometimes set by default!) to tweak the implementation for performance reasons.
Specifically for your compiler check if you are in COFF ABI mode:
6.13 Initializing Static and Global Variables in COFF ABI Mode
The ANSI/ISO C standard specifies that global (extern) and static variables without explicit initializations
must be initialized to 0 before the program begins running. This task is typically done when the program is
loaded. Because the loading process is heavily dependent on the specific environment of the target
application system, in COFF ABI mode the compiler itself makes no provision for initializing to 0 otherwise
uninitialized static storage class variables at run time. It is up to your application to fulfill this requirement.
Initialize Global Objects
NOTE: You should explicitly initialize all global objects which you expected the compiler would set to
zero by default.
In C6000 EABI mode the uninitialized variables are zero initialized automatically
from "TMS320C6000 Optimizing Compiler v7.4
User's Guide"
http://www.ti.com/lit/ug/spru187u/spru187u.pdf