Quiz submission record for quiz2-1-1 at Sun Jun 27 23:14:59 2004: Your Answer for Question 1: a. FALSE, because if a block to be returned is too big, only the tail end is chopped off and returned to the user: "If the block is too big, it is split, and the proper amount is returned to the user..." (185). b. TRUE, above is an example of this. If a big block is split into two and only one is returned, the number of free blocks is unchanged. c. FALSE, because when a free block is divided, it is only divided into two and no more. Your Answer for Question 2: a. FALSE, because a freed block can be combined with its neighbor, keeping the number of blocks the same. b. TRUE, because a freed block can be combined with one of its neighbor, keeping the number of blocks unchanged. c. TRUE. A freed block can be combined with two of its adjacent neighbors, upper and lower, reducing the number of free blocks by one, but this fusion is only limited to three adjacent neighbors, so reduction more than one is impossible. d. FALSE. The same reason as answer to c. Your Answer for Question 3: Java's equivalent of malloc is the creation of anonymous objects using "new" keyword. There is no Java's equivalent of free, because Java uses automatic memory de-allocator, aka garbage collector. C cannot use automatic memory manager because (1) in C, it is impossible to tell automatically whether a particular storage is garbage and (2) it is impossible to automatically de-allocate some space that has been allocated by the programmer. (1) is due to the fact that in C, programs can cast void pointers and pointersreturned by dynamic allocation, because it needs to know the type information of data. Your Answer for Question 4: It can be reclaimed by reference count method, because it is not a circular structure. Firstly, the upper-left corner object has zero reference, so it will be removed, and then the other two adjacent to it, and lastly the object at lower-right hand corner will be removed. Mark and sweep will also reclaim this structure, because starting from the root, the marker will never come across this structure (since no external pointer points to it). Your Answer for Question 5: I found all the example codes very difficult to understand (like the ones in extra handout and on P&H pp187-188). I've only been doing general programming, and never have done anything regarding memory, so most of technical terms and notations look foreign to me. For example, what is "nunits = (nbytes+sizeof(Header)-1)/sizeof(Header) + 1;"? Your unique submission ID is quiz2-1-1-cs61c-ew-1088403299-916.