测试结论是,第一个参数不能为NULL。

void* pMem = mmap(NULL, 4096, 7, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0);
//肯定错误。
if (pMem == (void*)-1)
{
printf("%s-%d mmap() failed!\n", __func__, __LINE__);
}
else
{
printf("%s-%d mmap() OK!\n", __func__, __LINE__);
}

  也就是必须给非空地址。这个地址怎么产生我也不太清楚。