C has three types of storage: automatic, static and allocated.
Variable having block scope and without static specifier have automatic storage
Variables with block scope, and with static specifier have static scope. Global
variables (i.e, file scope) with or without the the static specifier also have static
Memory obtained from calls to malloc(), alloc() or realloc() belongs to allocated