Fedora Linux x86_64 (4G RAM と 16G スワップ) で 1TB の匿名ファイルを mmap しようとしています。しかし、私は 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;
}