Профилирование времени жизни объекта 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 <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;
}

- Шаблон использования -

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

struct _A {
  _AInfo m_info;
};

Первоначально я думал, что этот вопрос задает вопрос об использовании техники отражения C ++ для сбора информации во время выполнения. Тем не менее, я не знаю, есть ли способ измерить время жизни объектов с помощью отражения C ++. Фурхтер, можете ли вы считать, что отражение в C ++ - это метод, который уменьшает зависимости между классами профилирования и профилирования?

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

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