【发布时间】:2010-10-10 03:45:27
【问题描述】:
以下删除对象数组有什么不同吗?
第一种方式:
MyClass **obj = new MyClass*[NUM];
for (int i=0; i<NUM; i++) obj[i] = new MyClass(val);
obj[0]->method();
for (int i=0; i<NUM; i++) delete obj[i]; /// Deletion1
delete obj; /// Deletion1
第二种方式:
MyClass **obj = new MyClass*[NUM];
for (int i=0; i<NUM; i++) obj[i] = new MyClass(val);
obj[0]->method();
delete[] obj; /// Deletion2
obj = 0x0; /// Deletion2
这两种方法都可行,并且在调试器中看起来很相似。
【问题讨论】:
-
"obj = 0x0; /// 删除 2" cmets 是谎言的一个很好的例子!
-
正确答案根本不是。如果您必须手动删除某些内容,那您就做错了。
-
克里斯,我不这么认为。就像你所说的那样,解释对我来说还不够。
-
Johnsyweb,它更像是一个边界标志,一个真正的评论。显然,样本正在调查诸如家庭作业之类的事情。