有没有什么:
- 分配/解除分配/重新分配许多可变大小的对象而没有碎片(基本上是什么
malloc
)和 - 跟踪用于这些分配的所有内存页面,以便我可以
- 稍后
mprotect
将所有这些页面设为只读 - 最好没有任何锁定 - 所有访问都将是单线程的
- 可以在 Linux 和 OS X 上运行,最好在 Windows 上使用等效的东西?
我想不出用标准内存分配函数来做这件事的方法。想到的唯一策略是使用自定义内存池而不是malloc
. 所以我的问题是:有没有办法在没有自定义malloc
或(如果没有)关于使用什么的建议的情况下做到这一点?
我可以很容易地包装malloc
并跟踪它使用过的所有页面我如何保证一旦我调用mprotect
了这些页面malloc
就不会尝试使用在分配块开始之前或结束之后“捕获”的内存在受影响的页面之一内?