Compare contiguous-memory allocation with pure paging in the following aspects:
1. In support of dynamic memory allocation: most systems allow programs to allocate more memory to its address space during execution. Heap and stack are examples of such allocated memory.
2. External fragmentation and internal fragmentation.
3. Ability to share code across processes.