free()之后内存会发生什么?

Lie*_*nau 6 c memory windows

我知道在您的硬盘驱动器上,如果删除文件,数据不会(立即)消失.数据仍然存在,直到被覆盖.我想知道在记忆中是否存在类似的概念.假设我为一个字符串分配了256个字节,那个字符串在我free()被覆盖之后仍然在内存中浮动?

chr*_*ock 6

你的比喻是正确的。内存中的数据不会消失或类似的东西;free()尽管尝试从释放的内存中读取是未定义的行为,但在 a 之后这些值确实可能仍然存在。


Jer*_*ock 5

一般来说,它确实存在,除非你在free它之前明确地覆盖字符串(就像人们有时会使用密码).某些库实现会自动覆盖已释放的内存以捕获对它的访问,但这不是在发布模式下完成的.