读书人

这个类是否存在一些隐患呢?该怎么解决

发布时间: 2012-03-04 11:13:33 作者: rapoo

这个类是否存在一些隐患呢?
class CTopo
{
public:
CTopo()
{
m_Id = 0;
m_pcTopo = 0;
m_iLength = 0;
}
CTopo(int Id, char* pcTopo, int iLength)
{
m_Id = Id;
m_iLength = iLength;

m_pcTopo = new char[iLength];
memcpy(m_pcTopo, pcTopo, iLength);
}
~CTopo()
{
if (m_pcTopo != 0)
{
//delete[] m_pcTopo;
m_pcTopo = 0;
}
}

public:
int m_iEmsId;
char* m_pcTopo;
int m_iLength;
};
typedef vector <CTopo> CTopoArray;

如果我直接这么定义一个vector
CTopArray topoarray;

然后插入几个CTopo对象,这个对象是拷贝过来的。。
如果最后这个CTopoArray失去生命域了,会不会报异常呢,原因就是因为析构函数中有delete,但是成员变量中的char*不一定是通过new分配的呢?

[解决办法]
1. 没有拷贝构造函数和operator=;
2. 没有删除分配的内存, 内存泄露是肯定的。

读书人网 >C++

热点推荐