<P> In general, static memory allocation is the allocation of memory at compile time, before the associated program is executed, unlike dynamic memory allocation or automatic memory allocation where memory is allocated as required at run time . </P> <P> Static variables date at least to ALGOL 60 (1960), where they are known as own variables: </P> <P> A declaration may be marked with the additional declarator own . This has the following effect: upon a re-entry into the block, the values of own quantities will be unchanged from their values at the last exit, while the values of declared variables that are not marked with own is undefined . </P> <P> This definition is subtly different from a static variable: it only specifies behavior, and hence lifetime, not storage: an own variable can be allocated when a function is first called, for instance, rather than at program load time . </P>

Where are local static variables stored in c