Quiz submission record for quiz2-1-1 at Mon Jun 28 09:55:22 2004: Your Answer for Question 1: b and c are true. When more memory is called for from the OS, the new memory added to the list of free blocks may be just enough for the allocation or may be in excess of the memory needed for the allocation. Your Answer for Question 2: b and c are true. When blocks are coalesced, neighbors of a block in the process of being freed will be combined into one block to make a single, larger block of memory to be freed. At most, the change will go from having two free blocks of memory who are both neighbors of a block being freed to one block of memory that combines all three (reducing the number of free blocks by one). It is also possible that coalescing will keep the number of free blocks constant. Your Answer for Question 3: "new" is Java's equivalent to memory allocation and the automatic garbage collector is the equivalent to freeing memory in Java. The reason why C cannot implement an automated memory allocation/deallocation system is because any generalized implementation requires generalized pointers to objects, which is insufficient in providing enough information about allocated objects to automate the process. This information is needed to retrieve enough information to know where and what pointers are pointing to (rather than a void pointer which could be anything unless you know ahead of time what you'll be allocating or retrieving). Your Answer for Question 4: By reference count, no; there will always be pointers to at least one node in the structure so it cannot be successfully removed since reference count requires that there be no pointers to a structure that is to be removed. Mark and sweep would work since all pointers are followed to reachable objects which are subsequently marked as reachable; all unmarked objects are removed. If nothing else points to this structure, then none of the items in it will be marked and the memory can be successfully reclaimed. Your Answer for Question 5: The code in 8.7 was really hard to follow; the PH notes were much clearer and the semi-pseudo implementation clarified many questions on how many of the routines worked. Most of my confusion was just syntax on implementations; the general ideas are clear (which I suppose are the most important thing) though. I found many things interesting...I finally know what "defragmenting" does and have more understanding of why Java just seems so much simpler than C. Your unique submission ID is quiz2-1-1-cs61c-eq-1088441722-383.