Pointers 流指针的共享和3的规则

Pointers 流指针的共享和3的规则,pointers,copy-constructor,ofstream,Pointers,Copy Constructor,Ofstream,我正在试图修复val grind发现的内存泄漏。我没有编写它,但我将原始代码简化为使用ofstream,而不是filebuf和ostream 问题是我不知道如何正确地删除ofstream指针,该指针是在其他代码中从虚拟getter方法共享和调用的。我认为这段代码违反了3的规则,但是尝试不同的赋值和复制构造函数是不起作用的 下面是我试图修复的基本代码的一个示例,当它去删除ofstream指针is seg faults时。在segfault之前,我得到了一个双重删除错误 如果有人能帮忙,我好像被困在

我正在试图修复val grind发现的内存泄漏。我没有编写它,但我将原始代码简化为使用ofstream,而不是filebuf和ostream

问题是我不知道如何正确地删除ofstream指针,该指针是在其他代码中从虚拟getter方法共享和调用的。我认为这段代码违反了3的规则,但是尝试不同的赋值和复制构造函数是不起作用的

下面是我试图修复的基本代码的一个示例,当它去删除ofstream指针is seg faults时。在segfault之前,我得到了一个双重删除错误

如果有人能帮忙,我好像被困在这里了,谢谢

class myLogger
{
public:

 myLogger(std::string testName);

 void createFileLog();

 ...

protected:

 std::ofstream*  my_LogStream;

};

void MyLogger::createFileLog()
{
    if(Created == false) 
    {
        m_pLogStream = new std::ofstream(logFileName.c_str(), std::ofstream::out);
        Created = true; 
    }
}

myLogger::~myLogger()
{
    if(m_pLogStream)
    {
        delete m_pLogStream;
        m_pLogStream = NULL;
    }
}

我发现在一个更高的调用中,它使用了一个副本并调用了两次析构函数