В моем проекте у меня есть абстрактный базовый класс "Base".Я хотел бы отследить все динамические распределения / освобождения объектов, которые происходят от "Base".С этой целью я переопределил операторы new / delete в «Base».
После успешного выделения памяти в переопределенном операторе new, я хотел бы уведомить объект, который я использую для отслеживания памяти, чтопроизошло распределение, с наиболее производным типом распределения и его размером.Размер не является проблемой (так как он передается непосредственно в новый оператор для «Base»), но получение самого производного типа является проблемой.
Я склоняюсь к мысли, что это не таквозможно так, как я пытаюсь это сделать.Поскольку более производные части объекта еще не созданы, нет способа узнать, что они из себя представляют.Однако перегруженный оператор «Базового» класса знает кое-что о конечном продукте - размере - так что можно узнать что-нибудь еще о нем?
Для контекста:
void* Base::operator new( size_t size )
{
void* storage = malloc( size );
if ( storage == NULL )
throw std::bad_alloc();
// Notify MemoryTracker an allocation has occurred
// MemoryTracker::Instance().Allocate( type, size );
return storage;
}