私は2つのクラスを持っています。1つは継承し、もう1つは継承しostream
ます。streambuf
これが私がそれらを使用している方法です
int main () {
stampstream ss(8,10);
}
スタンプストリーム
stampstream::stampstream(int r, int c) : ostream(new stampbuf(r,c))
{
std::cout << "I am in stampstream" << std::endl;
}
親 (ostream) クラスの ctor を呼び出して、パラメーターに stampbuf クラスのオブジェクトを作成しているだけです。
スタンプバフ
stampbuf::stampbuf(int r, int c)
: _row(0), _column(0), BUFFER_SIZE(10), _buffer(new char[BUFFER_SIZE])
{ //some code }
そのため、プロジェクトで Valgrind を実行すると、106 バイトのメモリ リークがあると表示されます。そのうち 96 件は からnew stampbuf(r,c)
、10 件は から来ています_buffer(new char[BUFFER_SIZE])
delete
メモリを解放するために呼び出す Stampbuf のデストラクタがあり_buffer
ます。ただし、デストラクタは呼び出されません。このメモリ リークを取り除き、stampbuf のデストラクタを呼び出すにはどうすればよいですか?
編集
class stampstream : public ostream {
public:
stampstream(int r, int c);
virtual ~stampstream();
};
class stampbuf : public streambuf {
public:
stampbuf(int r, int c);
~stampbuf();
virtual int overflow(int ch);
};