忘记深拷贝的后果
写了一个类,
class CTP
{
public:
CTP( )
{
m_pic = new BYTE [ 20 ] ;
}
~CTP( )
{
delete [] m_pic ;
}
private:
BYTE * m_pic;
}
在另一端写了类似这样的代码
{
vector<CTP> vTp;
CTP a;
vTp.push_back(a);
}
然后每次在运行到析构的delete的时候会内存访问错误。找了很久,在便友的帮助下,找到原因——push_back会做一次CTP的复制构造函数,由于我没有给出代码,所以编译器自己写了一个浅拷贝。造成那段代码被重复删除,问题出现。
解决办法,是给出复制构造函数,或者(更好的办法)是封装vector,只是传递指针。
------------------------------------------------------------------------
email : aicrosoft1104@126.com
吃遍天下。