Я пытаюсь выделить память, используя mmap в C ++, и компилировать, используя 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 ++ дает ту же ошибку.Кто-нибудь знает правильный способ вызова mmap в C ++?Точно такая же программа прекрасно работает, если это * .c файл.
РЕДАКТИРОВАТЬ: Также я имею в виду, что в версии * .c я удаляю статическое приведение, и оно будет работать.