我试图在C ++中使用mmap分配内存,并使用Clang / Clang ++进行编译,但是当我编译代码时遇到错误。代码:
// test.cpp
#include <stdio.h>
#include <stdlib.h>
#include <sys/mman.h>
int main() {
int *a = static_cast<int*>(mmap(0x20000, sizeof(int), PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0));
*a = 13;
return 0;
}
错误:
test.cpp:6:29: error: no matching function for call to 'mmap'
int *a = static_cast<int*>(mmap(0x20000, sizeof(int), PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0));
^~~~
/usr/include/x86_64-linux-gnu/sys/mman.h:57:14: note: candidate function not viable: no known conversion from 'int' to 'void *' for 1st argument
extern void *mmap (void *__addr, size_t __len, int __prot,
^
1 error generated.
使用Clang或Clang ++编译会产生相同的错误。有谁知道在C ++中调用mmap的正确方法?如果是* .c文件,则完全相同的程序也可以正常工作。
编辑:另外,我的意思是在* .c版本中,我删除了静态演员表,它将起作用。