帮忙看看,这个数据成员怎么释放内存
class V
{
public:
V(int =100);
V(const V &);
display(); //用于输出 buffer 指向空间里的数据。
setV(); //用于向 buuffer 指向的空间里面输入数据
~V();
pretected:
int *buffer;
int size;
};
V::V(int s)
{
size=s;
buffer=new int[size];
}
V::V(const V& v1)
{
delete [] buffer;
size=v1.size;
buffer=v1.size;
}
V:~V()
{
delete [] buffer;
}
void main()
{
V a(10);
V b(a);
a.setV();
b.display();
}
这里用拷贝构造函数 使得b.buffer指向了a.buffe所指的空间,目的是b可以看到a的内容。 但是这样子由于析构函数,这个 buffer 就被重复释放了。有什么办法解决么?
[解决办法]
用指针:V *b = &a; 不用拷贝构造函数
要不就:
V:~V()
{
if(buffer != NULL)
delete [] buffer;
}