Вызов mmap в C ++, компиляция с использованием Clang - PullRequest
0 голосов
/ 08 октября 2018

Я пытаюсь выделить память, используя 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 я удаляю статическое приведение, и оно будет работать.

...