字符串分配删除异常
字符串分配删除错误C/C++ codeclass tC{public:const char* add(const char* a,const char* b){int size
字符串分配删除错误
C/C++ codeclass 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空指针也是没问题的
[解决办法]你调用的时候多做异常判断,你这种是内存溢出了