0
val-grind에 의해이 코드가 발견 된 메모리 누수 문제를 해결하려고합니다. 필자는이 코드를 작성하지 않았지만 원래 코드를 ofstream을 사용하여 filebuf 및 ostream을 사용하지 않도록 축소했습니다.Ofstream 포인터와 3의 규칙 공유
문제는 다른 코드의 가상 getter 메서드에서 공유되고 호출되는 ofstream 포인터를 올바르게 삭제하는 방법을 알아낼 수 없다는 것입니다. 나는이 코드가 3의 규칙을 위반한다고 생각하지만 다른 할당 및 복사 생성자를 시도하는 것은 효과가 없었다.
다음은 ofstream 포인터를 삭제하려고 할 때 수정하려고하는 기본 코드의 예입니다. 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;
}
}