Local data is also invisible and inaccessible to a called function,[note 1] but is not deallocated, coming back in scope as the execution thread returns to the caller.
[note 2] Automatic local variables are normally allocated in the stack frame of the procedure in which they are declared.
The concept of automatic variables in recursive (and nested) functions in a lexically scoped language was introduced to the wider audience with ALGOL in the late 1950s, and further popularized by its many descendants.
[1] The storage-class specifier auto can be added to these variable declarations as well, but as they are all automatic by default, this is entirely redundant and rarely done.
[4] This differs from instance variables, which are implicitly initialized with default values (which are 0 for numbers and null for objects).