Я сопоставляются два анонимных страниц в памяти, а затем получить доступ ко второй странице, как показано ниже:mmaping несколько анонимных страниц с
int* map = mmap(NULL, 8 * 1024, PROT_READ, PROT_WRITE, MAP_SHARED |
MAP_ANONYMOUS, -1, 0);
int a = map[4096];
, где размер страницы равен 4096 (я проверил это), но это бросает SIGSEGV. Я попытался использовать madvise(map, 8 * 1024, MADV_WILLNEED)
и использовать флаг MAP_POPULATE
в mmap, но это не помогло. Что я могу сделать, чтобы сделать эту работу?
Какой размер 'int' в вашей среде? Вы выделили 8K * байты *, но если 'int' шириной не менее 2 байтов, 'map [4096]' будет пройденной отметкой 8 КБ. –
Это была моя проблема. Я обратился к нему в своем ответе, но не видел вашего ответа, поскольку страница не обновилась. – user3148225