By telling compiler 'static' - you will most probably get that variable initialized during mainCRTstartup - that's before main is called. If you're performing variable initialization during main, other data initialization must happen after that - you could have doInitialize() like function call, which would perform initialization of your 'check' variable.
It's also possible to have static written inside function itself - then static gets initialized when that function gets called - you could place 'static' after you initialize G_SIZE in main itself.
Playing around with order or constructors / destructors is always bit of luck game (Dangerous) - order to constructors and destructors is not guaranteed, and it's possible that you'll hit uninitialized data when initializing in static - simply because another variable was not initialized yet.
But sometimes even destructor call order might needs to be altered. -
FYI:
http://www.codeproject.com/Articles/442784/Best-gotchas-of-Cplusplus-CLI
CrtDestroyStatics.