Copying GC が何なのか, という事については authorNari さんの記述や pasberth さんの記述に任せるとして, ここでは満たすべき機能を記述したいと思います.
(1) プログラマの記述した型に適合した heap から allocate してくる.
// int に適合した heap を適当に 256 用意する.
memory_manager<int> manager(256);
// ここで allocate する.
int *x = manager.alloc(10);