【发布时间】:2020-04-15 16:50:45
【问题描述】:
我有 3 个工具,我需要它们共享相同的前 4096 字节自己的内存。 每个工具都可以独立增加内存。
所以一份简历:
工具1:
0 - 4096 :在 1,2,3 之间共享
4097 - 8192:1 内部
工具2:
0 - 4096 :在 1,2,3 之间共享
4097 - 16384:2 内部
工具3:
0 - 4096 :在 1,2,3 之间共享
4097 - 12288:3 内部
是否可以使用 mmap 来实现我的目标,因为我更喜欢 mmap ? 如果有其他解决方案,也许我可以调整我的代码。
提前感谢您的帮助。
【问题讨论】:
-
我需要他们共享自己内存的前 4096 个字节“他们自己的内存”是什么意思?我假设您的意思是堆内存之类的东西,因为进程的 first 4096 字节是地址 0x00000000 并且该页面受读/写保护。当您使用
mmap时,您可以获得一个指向您的程序之间共享的区域的指针。但是,具体地址不应该是一个问题。如果是,为什么?您应该在问题中发布您的代码,并就其操作提出 [更多] 具体问题。 -
我的意思是 0 是每个工具中一种线性内存的开始。所以,0是每个内存工具使用的起始指针。
-
“一种线性记忆”是什么意思?在一个进程内,所有内存都是线性的。我认为您接近 XY 问题:mywiki.wooledge.org/XyProblem 所以,忘记
mmap等。人。暂时描述一下你想要实现的什么。 (例如)“我正在编写需要共享学生数据的程序”您的需要是什么?mmap是满足需求的解决方案。