【发布时间】:2021-06-29 17:17:13
【问题描述】:
以下代码崩溃了,但是我很困惑它是如何被允许的。
int* var = new int;
int num = 10;
var = #
std::cout << *var << ", " << num << std::endl;
delete var;
std::cout << "Program finished" << std::endl;
我更改了var 所指的内容是否会导致内存泄漏?如果是这样,是否会导致从第 3 行开始无法修复的内存泄漏?如果没有,你怎么能删除这段记忆?
【问题讨论】:
-
内存泄漏,然后是未定义的行为。如果您忘记了
new返回的地址,您将泄漏内存。如果你delete不是由new分配的东西,你有未定义的行为。 -
不完全是重复的,该帖子要求删除堆栈分配的变量,这不一定是,它如何解决不再指向该堆分配内存的堆分配变量。 ..
标签: c++ pointers memory heap-memory