malloc()
和free()
(Linux GCC)在哪里存储已分配地址及其大小?我读到有些实现将它们存储在实际分配的内存之前的某个地方,但我无法在我的测试中确认这一点。背景:也许有人对此有其他提示: 我正在尝试通过分析进程的堆内存来确定另一个进程中字符串的当前值。访问进程堆内存并浏览其中的内容不是问题。但是,由于字符串的值会发生变化,并且进程每次分配新的一部分内存,因此字符串的地址会发生变化。因为该字符串具有固定格式,所以仍然很容易找到,但经过几次更改后,旧版本的字符串仍然存在于堆内存中(可能已被释放,但仍未被重用/覆盖),因此我无法确定哪个字符串是当前的字符串。
因此,为了仍然找到当前字符串,我想通过将我在内存中发现的字符串的地址与
malloc()
和free()
知道的地址进行比较来检查该字符串是否仍在使用。