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

404*_*und -2 c++ memory pointers heap-memory

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

int* var = new int;
int num = 10;
var = #

std::cout << *var << ", " << num << std::endl;
    
delete var;
    
std::cout << "Program finished" << std::endl;
Run Code Online (Sandbox Code Playgroud)

我改变了var指向的事实是否会导致内存泄漏?如果是这样,它是否会导致无法从第 3 行开始修复的内存泄漏?如果没有,你怎么能删除这段记忆?

Pau*_*ers 5

C++ 并不能保护您免受基本错误的影响。在这种情况下,你调用delete了一些你没有调用的东西new,这通常会导致崩溃。这个故事的寓意是“不要那样做”。

至于内存泄漏,是的,您泄漏了分配的内存new(因为您在重新分配时会忘记它var)。

  • @NateEldredge 嗯,是的,但我认为重点是发布的代码并没有这样做。 (2认同)