有什么:
malloc
所做的)和mprotect
所有这些页面都将其设为只读我无法想到使用标准内存分配函数的方法。想到的唯一策略是使用自定义内存池而不是malloc
。所以我的问题是:有没有一种方法可以在没有自定义malloc
或(如果没有)建议的情况下执行此操作?
我可以包装malloc
并跟踪其使用过的所有网页非常容易如何保证一旦我在这些页面mprotect
上调用malloc
就不会尝试使用在一个受影响的页面中,在一个已分配的块的开始之前或结束之后被“捕获”的内存?
答案 0 :(得分:1)
开源Memory Pool System将在操作系统页面大小的块中分配内存,MPS本身不会触及这些块。如果您愿意,可以mprotect
这些页面,并确保分配器本身(将其所有数据结构保留在别处)或任何其他内存池不会触及它们。如果您使用MVT池类,您也可以利用inline lockless allocation。 Linux, Mac OS X, and Windows are supported
免责声明:我是MPS的架构师。