一个很烦人的问题。关于delete 。
char *p = new char[2];
char *a = new char;
delete []p;
delete a;
是正常的清理。
但 delete &(p[0]); <- 出错
delete &(p[1]);
delete a;
为什么报错?
我现在有一个 CPtrArray ar; // 存放了地址,用来清理。
ar.Add(&p[0]);
ar.Add(&p[1]);
ar.Add(a);
那我该如何来清理这个ar呢?(ar并不知道 p 是个字符窜,a是个字符)
delete ar.GetAt(0); <- 出错
delete ar.GetAt(1);
delete ar.GetAt(2);
如果改成
delete []ar.GetAt(0);
delete ar.GetAt(2);
就没错了。
该如何清理ar ?
当然,如果我p是单独new的话,就肯定没有问题了。