为什么允许使用此代码,它是否会造成内存泄漏?

下面的代码崩溃了,但是我很困惑它是如何被允许的。

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.

以上是为什么允许使用此代码,它是否会造成内存泄漏?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>