给定地址,之前使用 Malloc 分配的已释放堆内存段是否可以从内核访问?鉴于每个 free() 都不会将内存返回到内核池(因为本地内存管理)。
如果是,如何区分有效(未释放)地址的访问?
基本上,我正在尝试从核心转储一些数据结构。并且想知道,我是否将处理有效的数据结构或先前分配但已释放的数据结构
最佳答案
即使尝试访问以前释放的内存也是未定义的行为。
如果它确实被释放,它可能会被您自己的程序重用,因此该地址仍然由它“拥有”。然而,通过释放的指针访问它将不会执行您期望的操作(或者可能会执行,因为未定义的行为)。
所以不,你不能简单地检查指针是否被释放,你需要自己正确地进行内存管理。像RAII这样的技术会帮助你。
关于c++ - 可以从进程核心访问释放的内存段吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28276738/