我正在动态生成大量大小和寿命不可预测的可执行机器代码碎片。目前我使用一个天真的可执行mmap预分配区域,但这只是暂时的,因为最终会耗尽内存。我没有实现任何内存回收机制,也不想这样做:这是一个困难的问题(难以调试错误、碎片化、多线程等)。
我需要的是一个库,它实现了malloc/free协议,但启用了可执行位。
是否有任何malloc实现提供此选项(可以是编译时标志)?
进一步的细节如下以回答评论:
我的当前平台是Linux x86_64,但欢迎Windows和ARM 32/64支持(但不是必须的)。
内存永远不会与不同的进程共享,但分配器必须具备多线程意识,并且在这种情况下,如果可能的话,要具有可扩展性。
我需要的是一个库,它实现了malloc/free协议,但启用了可执行位。
是否有任何malloc实现提供此选项(可以是编译时标志)?
进一步的细节如下以回答评论:
我的当前平台是Linux x86_64,但欢迎Windows和ARM 32/64支持(但不是必须的)。
内存永远不会与不同的进程共享,但分配器必须具备多线程意识,并且在这种情况下,如果可能的话,要具有可扩展性。
mmap
是共享的还是私有的?如果有关系的话,它是私有和匿名的。 - user3368561malloc()
,并在另一个线程上使用free()
,但这不是必须的。目前内存使用是无界限的,但如果需要,它可以被限制。任何比我当前的“解决方案”更好的东西(一种不安全的黑客方法,当缓冲区满时会导致程序崩溃)都将受到欢迎。 - user3368561