我有两个类,一个继承自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])
我有用于释放内存的 stampbuf 的析构函数delete
。_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);
};