首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2012-03-04 
这个类是否存在一些隐患呢?classCTopo{public:CTopo(){m_Id0m_pcTopo0m_iLength0}CTopo(intId,char*

这个类是否存在一些隐患呢?
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. 没有删除分配的内存, 内存泄露是肯定的。

热点排行