Профилирование времени жизни объекта C ++

Класс ObjectInfo - это диагностический класс, предназначенный для отслеживания статистических данных, таких как время жизни и количество объектов. Определенный класс наследует от ObjectInfo, как показано. Член этого конкретного класса затем объявляется в теле профилированного класса.

Хотя решение работает, его трудно поддерживать, так как оно требует, чтобы класс профилирования был синхронизирован с профилированным классом, поскольку имя класса используется для идентификации последующего. Также было бы сложно расширить класс профилирования для сбора различной информации, такой как размер объекта.

Предложите лучшее решение, где зависимости между профилированным и профилирующим классами минимальны.

Можно ли реализовать проверку, которая бы определяла, был ли объект профилированного класса создан в стеке или куче?

- ObjectInfo.h -

#pragma once

class ObjectInfo
{
 public:
  ObjectInfo(const char* objectName);
  virtual ~ObjectInfo(void);

 private:

   static int  m_counter;
   int         m_objectNumber;
   const char* m_className;
};

- ObjectInfo.cpp -

#include "StdAfx.h"
#include "ObjectInfo.h"
#include 
#include "TimePrinter.h"

using namespace std;
int ObjectInfo::m_counter = 0;
ObjectInfo::ObjectInfo(const char* name) :
m_className(name)
{
   m_objectNumber = ++m_counter;
   cout < "Object: " < m_className < "# " < m_objectNumber < " created @ " <    TimePrinter()< endl;
}

ObjectInfo::~ObjectInfo(void)
{
  cout < "Object: " < m_className < "# " < m_objectNumber < " destroyed @ " < 
  TimePrinter() < endl;
}

Ответы на вопрос(1)

Ваш ответ на вопрос