может не совсем понимаю, но что мешает сделать так: Код (Text): class A { public: void * __cdecl operator new (size_t size) { //implementation here return NULL; } void __cdecl operator delete (void * ptr) { } };
censored Дело в том, что так можно подцепить реализацию на каждый объект отдельно или на базовый. Трудность в том, что нужно править объекты, по отдельности, если их вообще можно править (напр., используется библиотека).
Аллокация памяти может вызвать перебор уже выделенных блоков, а может и не вызвать - зависит от реаллокаций, освобождения блоков, фрагментации и многого другого. Если перебор происходит, то лучше чтобы он произошёл в меньшем количестве блоков. Поэтому, если каждый документ имеет собственный heap - это будет быстрее, по сравнению с одним heap-ом на все документы. Кроме того, чтобы закрыть документ надо вызвать один HeapDestroy(), вместо освобождения каждого элемента в документе. Насчёт STL - да, там не развернешься особо. Но я STL не использую - все векторы, листы, дервья и другие коллекции - всё сделано с нуля. Кстати, STL в дизассемблере: картина не очень впечатляет.