Using list for this is way too slow. Delphi uses MakeObjectInstance and FreeObjectInstance from Classes unit for this purpose. Their implementation is ugly, but it looks like, that it's made for max performance. Problem is - they use runtime code generation, that isn't cross-platform, I guess. I.e. platform-dependent inc file is needed.