以下代码应该释放" num1"的动态内存。删除声明后。我知道它仍然会保留内存地址,但我不明白的是为什么旧值" 5"还在那里?
抱歉,我还是编程新手,希望你们能帮助我。 谢谢:)
答案 0 :(得分:2)
删除变量对内存没有任何作用。它只是对操作系统说“我现在已经完成了使用这个内存空间,你可以自由使用它。”
老实说,打印free'd变量是未定义的行为,你永远不知道会发生什么。一小时后尝试运行相同的程序,它可能会打印出垃圾甚至崩溃。
答案 1 :(得分:1)
这是未定义的行为。 发生在该内存地址处具有相同的值。但如果您稍后检查,则该值可能会更改。如果你delete
一个对象,那么该地址的值将不会被重置"零,或类似的东西。它只会保留它的最后一个值,直到某个其他对象占用该内存并在那里写入值。
您未分配的地址的值未定义,期限。