【发布时间】:2014-06-26 15:32:20
【问题描述】:
有人可以帮我解答这个问题吗?
在下面的 (*) 行分配的内存不会被删除。
void f() {
int z = *new int; // (*)
//...
}
在不修改(*)行代码的情况下,有什么办法可以避免内存泄露?如果是这样,怎么做?如果没有,为什么不呢?
我不明白的是,*new int 是什么意思?具体来说,在new旁边加上*是什么意思?
另外,如果我们有 int &z 而不是 int z 呢?
【问题讨论】:
-
这意味着某人正在做一些非常愚蠢的事情。如果你使用了
int &z,那么你可以使用delete &z,但这是非常不习惯的代码,会引起很多人的注意。 -
这是一个面试题吗?
-
@Simple: 可以作为一种解决方法来避免函数体中的指针取消引用。
-
*new是 内存泄漏操作符。不要使用它。 -
@Werner。这是一个古老的考试题