我正在编写一个C库,需要频繁移动各种敏感数据。我希望在扩展已分配的内存块时(当内存可用时不进行复制),能够擦除旧块内容,同时又能享受realloc带来的好处。
有没有一些轻量级的malloc/realloc/free实现可以用于mingw-gcc或其他技巧?或者只能过度分配并仅仅靠分配和复制而不能依赖realloc?
我正在编写一个C库,需要频繁移动各种敏感数据。我希望在扩展已分配的内存块时(当内存可用时不进行复制),能够擦除旧块内容,同时又能享受realloc带来的好处。
有没有一些轻量级的malloc/realloc/free实现可以用于mingw-gcc或其他技巧?或者只能过度分配并仅仅靠分配和复制而不能依赖realloc?
mremap
,是否会依赖于系统在其选择的时间擦除旧内存块(如果它导致内存被移动)? - Ian Abbottmlocked
,该内存就是您的,直到您munmap
它(此时您最好确保首先将其清零)。 - Petr SkocikMREMAP_MAYMOVE
实际上不会复制,它只是将当前映射的物理内存页面重新映射到具有更多空间的虚拟地址空间的区域。我现在明白了。 - Ian Abbott