Windows 等价于 sys/mman.h

Windows Equivalent for sys/mman.h

我尝试在 Win64 上编译我的 C 代码时遇到问题。更具体地说,编译器找不到 sys/mman.h header,我知道它只在 Unix 环境中找到。

我已经知道这是关于内存分配的。

我可以使用 Windows 的等价物来移植代码(第一次尝试)吗?

导致问题的代码:

/* Allocate memory required by processes */
buf = (int*) malloc (sizeof(int));
if (!buf)
{
    perror("Error");
    free (buf);
    return -3;
}

/* Lock down pages mapped to processes */
puts("Locking down processes.");
if(mlockall (MCL_CURRENT | MCL_FUTURE) < 0)
{
    perror("mlockall");
    free (buf);
    return -4;
}

您应该查看 mman-win32 library. But as @Mgetz pointed out, a more simple way is to look at the VirtualAllocEx 函数并尝试调整您的代码。