Framework For Evaluating Dynamic Memory Allocators Including A New Equivalence Class Based Cache-Conscious Allocator