注册 登录
编程论坛 C++教室

请教:delete[] 回收多个数组空间的问题!

circlesky 发布于 2010-05-21 00:21, 720 次点击
比如用new分配了两个动态数组的内存:
char *p,*q;
int m;
p=new char[m];
q=new char[m];

如果该代码放在类B中, 类A派生出类B,类B派生出类C。然后在main()函数中生成C对象,运行程序时析构函数中:delete[] p;delete[] q会出错,而delete[] p,q正常运行。然而我在没有继承的类中测试delete[] p;delete[] q和delete[] p,q时,好像两者没有区别,都能实现正常回收空间。
请问高手在回收内存时:delete[] p;delete[] q和delete[] p,q的区别是什么?谢谢!

4 回复
#2
和尚者2010-05-29 20:43
用虚析构函数就搞定
#3
迷失的木桶2010-05-29 22:55
delete[] p,q
是逗号运算符了吧,q没有释放。。。

如果没继承不会出错,那么可能问题在C的派生类中

#4
bccn2502010-05-29 23:17
具体的,给一下完整代码吧,反正也不长
#5
迷失的木桶2010-05-29 23:25
a = (b, c);

a = c


1