Обнаружение утечки памяти в подсчитанных объектах

Я пытаюсь напечатать, на какой строке называются addref и release. Вот код

В приведенном ниже коде я создал класс ReferenceCount, основная функциональность которого заключается в увеличении и уменьшении количества ссылок. Класс Referencemanager отслеживает количество ссылок и удаляет объект, как только он достигает 0.

Test1 - это тестовый класс. В основном я создаю указатель Test1 и оборачиваю его классом CReferenceManager. Теперь при создании CReferenceManager вызывается класс AddRef и при уничтожении вызывается Release.

Если есть утечка памяти, тогда было бы легче определить, смогу ли я распечатать числа FILE и LINE, когда AddRef и Release вызвали с подсчетом ссылок в этой точке.

Если есть способ, которым я могу напечатать номер ФАЙЛА и ЛИНИИ, откуда вызывается AddRef и Release. Одним из способов является то, что я могу перезаписать AddRef и Release в производных классах и принтерах FILE и LINE.

//ReferenceCount.h
#include 
#include 

using namespace std;
class CReferenceCount
{
public:
   CReferenceCount();
   virtual ~CReferenceCount();
   virtual void AddRef();
   virtual bool Release();


private:
   LONG m_ref;

};


// RefCount.cpp 
//

#include "stdafx.h"
#include "ReferenceCount.h"


CReferenceCount::CReferenceCount():m_ref(0)
{
   AddRef();

}

CReferenceCount::~CReferenceCount()
{
}

void CReferenceCount::AddRef()
{
    InterlockedIncrement(&m_ref);
}

bool CReferenceCount::Release()
{
   if (InterlockedDecrement(&m_ref) == 0)
   {
      delete this;
      return true;
   }

   return false;
}



//ReferenceManager.h
#include 
#include 

using namespace std;
class CReferenceCount
{
public:
   CReferenceCount();
   virtual ~CReferenceCount();
   virtual void AddRef();
   virtual bool Release();


private:
   LONG m_ref;

};

//test.cpp
#include "stdafx.h"
#include "ReferenceCount.h"
#include "RefManager.h"
#include 
using namespace std;

class Test1: public CReferenceCount
{
public:
    Test1(){}
    ~Test1(){}

private :
    int m_i;
};

void main()
{
    Test1 *pTest= new Test1();
    CReferenceManager testRef(pTest);

}

Similare вопросы, которые я отправилнайти, кто создает объект с помощью умного указателя Шаблон проектирования для обнаружения утечек памяти для интеллектуальных указателей с подсчетом ссылок

но ни один из ответов не дает правильного объяснения для решения этой проблемы,

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

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