最近一个项目崩的淅沥哗啦的,用了2天查找
看下面的类定义
class binbuffer
{
byte *m_pBuffer;
binbuffer(int bytes = 0); // 1
binbuffer(const binbuffer &b); // 2
binbuffer& operator =(const binbuffer &buf); //3
}
最初只有一个构造函数1.后来因为会把它当成另一个类的结构放入vector中, 编译器提示缺少第二个构造函数,所以写了2
在程序中有一段这样的代码
binbuffer b1 =...;
binbuffer b2 = b1;// 4
注意4出,如果没有构造函数3,对象b2中的数据m_pBuffer会被b1中的m_pBuffer直接赋值.这样b2释放的时候就会释放点b1的buffer.
所以必须加构造函数3.