【发布时间】:2019-01-10 03:02:58
【问题描述】:
我正在动态生成大量可执行机器代码的小片段,所有这些片段的大小和生命周期都无法预测。目前我正在使用一个简单的可执行文件mmap 预分配区域,但这只是临时的,因为最终内存耗尽。我没有实现任何内存回收机制,我也不想:这是一个难题(难以调试错误、碎片、多线程等)。
我需要的是一个实现malloc/free 协议但启用了可执行位的库。
是否有任何malloc 实现提供此选项(可以是编译时标志)?
更多细节回答 cmets:
- 我当前的平台是 x86_64 上的 Linux,但欢迎支持 Windows 和 ARM 32/64(但不是必须的)。
- 内存永远不会与不同的进程共享,但分配器必须支持多线程,并且如果可能的话,在这种情况下可扩展。
【问题讨论】:
-
它取决于系统。什么是系统/拱门?
-
这是否可以同时为多个可执行文件使用相同的内存映射?
-
@bolov 问题已更新以回答您。
-
@Stargateur 你的意思是这个
mmap是共享的还是私有的?如果重要,它是私密和匿名的。
标签: c linux memory-management malloc x86-64