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

字符串分配删除异常

2012-04-24 
字符串分配删除错误C/C++ codeclass tC{public:const char* add(const char* a,const char* b){int size

字符串分配删除错误

C/C++ code
class tC{public:    const char* add(const char* a,const char* b)    {        int size = strlen(a)+strlen(b)+1;        m_l = new char[size];        strcpy(m_l,a);        strcat_s(m_l,size,b);        return m_l;    }    ~tC()    {        delete[] m_l;    }    tC():m_l(NULL){}private:    char* m_l;};

对象析构的时候发生错误,请问错在哪了

[解决办法]
目测没错。
难道你使用的时候有下面这样的?
tC tc;
char *p=tc.add("a","b");
delete[] p;//多于的deleted
[解决办法]
delete[] m_l;
->
if(m_l != NULL)
delete m_l;
[解决办法]
你这代码很混乱,我都不知道从哪说起了。
改变m_l大小之前应当先delete再new,你这样如果add不调用,析构就出错了,
如果add调用大于一次了,就内存泄露了,
而且delete的时候应当先判断指针是否为null,delete完了再赋值为null

[解决办法]
会内存泄漏,但应该不会删除报错,问题应该不在这里,delete空指针也是没问题的

[解决办法]
你调用的时候多做异常判断,你这种是内存溢出了

热点排行