为什么允许使用此代码,它是否会造成内存泄漏?
下面的代码崩溃了,但是我很困惑它是如何被允许的。
int* var = new int;
int num = 10;
var = #
std::cout << *var << ", " << num << std::endl;
delete var;
std::cout << "Program finished" << std::endl;
我改变了var指向的事实是否会导致内存泄漏?如果是这样,它是否会导致无法从第 3 行开始修复的内存泄漏?如果没有,你怎么能删除这段记忆?
回答
C++ 并不能保护您免受基本错误的影响。在这种情况下,你调用delete了一些你没有调用的东西new,这通常会导致崩溃。这个故事的寓意是“不要那样做”。
至于内存泄漏,是的,您泄漏了分配的内存new(因为您在重新分配时会忘记它var)。
- @NateEldredge Well, yes, but I think the point is that the code as posted does not do this.