Understanding the C++ Allocator Model for Efficient Memory Management