Вызов mmap изнутри функции в C - PullRequest
0 голосов
/ 02 апреля 2020

Я недавно начал играть с mmap и сегментами памяти. Я хочу вызвать mmap изнутри функции, но у меня есть проблемы, чтобы заставить его работать. Я могу вызвать mmap из main, и это работает. Я знаю, что речь идет об указателях, но мне кажется, что мне не хватает некоторых частей.

main:

int main(){

    char test[100];
    memset(test, 0xCC, 100);
    get_space(NULL,sizeof(test), PROT_READ|PROT_WRITE, (void**)&test);

    return 0;
}

Функция get_space:

void get_space(void **vaddr, unsigned int size, unsigned int flags, void **source){
    void *destination;

    destination = mmap(vaddr,size,PROT_READ|PROT_WRITE,MAP_PRIVATE,-1,0);
    memcpy(destination, source, size);

//...
}

Я нашел несколько тем об этом хорошая документация по mmap, но все равно не получилось. Ваша помощь будет оценена. :)

1 Ответ

0 голосов
/ 03 апреля 2020

Похоже, что mmap должен иметь флаг MAP_ANNONYMOUS, если вы не используете файловый дескриптор FD. Решено:)

...