11.2.3 Auto Variable Allocation and Access

This section discusses allocation of auto variables (those with automatic storage duration). This also includes function parameter variables, which behave like auto variables, as well as temporary variables defined by the compiler.

The auto (short for automatic) variables are the default type of local variable. Unless explicitly declared to be static, a local variable will be made auto. The auto keyword may be used if desired.

auto variables, as their name suggests, automatically come into existence when a block is executed and then disappear once the block exits. Since they are not in existence for the entire duration of the program, there is the possibility to reclaim memory they use when the variables are not in existence and allocate it to other variables in the program.

Typically such variables are stored on some sort of a data stack, which can easily allocate then deallocate memory as required by each function. The stack is discussed in below in 11.2.3.1 Software Stack.

The the standard qualifiers: const and volatile may both be used with auto variables and these do not affect how they are positioned in memory. This implies that a local const-qualified object is still an auto object and as such, will be allocated memory on the stack, not in the program memory like with non-auto const objects.