1. Using a debugger, try to determine whether your C++ compiler uses static address tables to look up exception handlers. Describe what the debugger tells you is occurring when an exception is raised.
2. Write declarations in a language of your choice for the maintenance of a free list of memory as (a) a circular singly linked list, and (b) a noncircular doubly linked list. Write procedures to deallocate a block using both of these data structures, being sure to coalesce adjacent blocks. Compare the ease of coalescing blocks in each case.