Разделяемые библиотеки также могут требовать биты вашего адресного пространства :) Но я полагаю, вы могли бы зарезервировать часть памяти, затем разархивировать ее и позже заменить на что-то другое. Просто остерегайтесь malloc в другом потоке, выполняя mmaps и заполняя только что открытое отверстие!

окументации по системному вызову говорится, что функция завершится ошибкой, если:mmapБыло указано MAP_FIXED, и аргумент addr не был выровнен по странице, или часть требуемого адресного пространства находится вне допустимого адресного пространства для пользовательского процесса.

Я нигде не могу найти документацию о том, что

было бы быть действительным адресом для карты. (Я заинтересован в том, чтобы сделать это на OS X и Linux, в идеале один и тот же адрес будет действителен для обоих ...).Ядро Linux резервирует часть виртуального адресного пространства для себя, где пользовательское пространство (почти) не имеет доступа и не может ничего сопоставить. Вы ищете то, что называется «разделение пространства пользователя / ядра».

Ответы на вопрос(1)

Ваш ответ на вопрос