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 行开始修复的内存泄漏?如果没有,你怎么能删除这段记忆?
C++ 并不能保护您免受基本错误的影响。在这种情况下,你调用delete了一些你没有调用的东西new,这通常会导致崩溃。这个故事的寓意是“不要那样做”。
至于内存泄漏,是的,您泄漏了分配的内存new(因为您在重新分配时会忘记它var)。