我正在尝试在 Fedora Linux x86_64(4G RAM 加 16G 交换)下映射一个 1TB 匿名文件。但是我得到了 ENOMEM “无法分配内存”,甚至是 32G,如下代码所示。我错过了什么吗?欣赏任何线索。
#define HEAP_SIZE (1UL << 35)
int main()
{
void *addr = mmap(0, HEAP_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED | MAP_ANONYMOUS, -1, 0);
if (addr == MAP_FAILED)
{
perror(NULL);
return 1;
}
printf("mmap %d gbytes succeed\n", HEAP_SIZE/(1UL << 30));
return 0;
}