我正在尝试
memory = (char *)mmap((void *)0X0000100000000000,(size_t)0xffffffff/8,PROT_READ | PROT_WRITE , MAP_SHARED|MAP_ANONYMOUS,4,0);
但它没有映射任何东西并返回0.我需要在64位机器的高地址映射内存。
答案 0 :(得分:1)
这并不是一个完整的答案 - 更多可能的解释:
0X0000100000000000是281474976710656.您是否有可用的虚拟内存地址?或者说另一种方式:该地址在您的操作系统中是否有效?我猜答案是否定的。
mmap实际上是否返回MAP_FAILED((void *)-1)?通常当你给mmap一个它不喜欢的地址时,你得到MAP_FAILED和errno == EINVAL。你检查过errno吗?
注意:4字节不是64位操作系统中的字长,通常是8.例如,4字节字不能解决所有内存。