Perfil de vida útil do objeto C ++

A classe ObjectInfo é uma classe de diagnóstico destinada a rastrear dados estatísticos como tempo de vida e número de objetos. Uma classe específica herda de ObjectInfo como mostrado. Um membro dessa classe específica é declarado no corpo de uma classe com perfil.

Embora a solução funcione, é difícil mantê-la, pois exige que a classe de criação de perfil esteja sincronizada com a classe analisada, pois o nome da classe é usado para identificar a última. Também seria difícil estender a classe de criação de perfil para coletar informações diferentes, como o tamanho do objeto.

Proponha uma solução melhor onde as dependências entre as classes com perfil e perfil são mínimas.

É possível implementar uma verificação que determinaria se o objeto da classe com perfil foi criado na pilha ou no heap?

- 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 <iostream>
#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;
}

- O padrão de uso -

struct _AInfo : public ObjectInfo {
    _AInfo() : ObjectInfo("_A") {}
};

struct _A {
  _AInfo m_info;
};

Eu originalmente pensei que esta questão está perguntando sobre como usar a técnica de reflexão C ++ para coletar as informações de tempo de execução. No entanto, não sei se existe uma maneira de medir a vida útil dos objetos usando a reflexão do C ++. Furthter, você pode considerar que a reflexão em C ++ é uma técnica que reduz as dependências entre as classes de perfil e de perfil?

questionAnswers(1)

yourAnswerToTheQuestion