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