Global objects, static data members of a class, namespace variables, and static variables in functions reside in static memory. Static objects are allocated by the linker and their address remains the same throughout the program’s execution. Every static object is constructed only once during the lifetime of the program. By default, static data are initialized to binary zeroes. Static objects are subsequently initialized by their constructors. Here are some examples of variables with static storage:
int num; //global variables have static storage int func(){ static calls; //initialized to 0 by default return ++calls;}class C{private: static bool b;};namespace NS{ std::string str; //str has static storage}