Answer from cs61c-ax (Amanda Alfonso 15906918) for Question 3 In Java, dynamic variables are "the anonymous objects the programmer creates using new." Automatic memory allocation is not possible in C because the language allows pointers to addresses (or, as the PH notes call them, "containers") - meaning that a storage location of local variables may be reused unless explicitly set aside. In the C language, it is (in principle) impossible to determine automatically that a particular piece of memory is no longer needed and may be recycled; once C allocates a chunk of memory, it will not touch it until explicitly requested. Moreover, the facts that "programs may cast the pointers returned by dynamic allocation to/from sufficiently large integer types" and that "programs may cast void pointers... to and from pointers of any type with a compatible size and alignment" also prevent an automatic memory allocation/deallocation system.