Функция mmap()
является вызовом POSIX. Он отлично работает на MacOS X (и Linux, и HP-UX, и AIX, и Solaris).
Проблемной областью будет Windows. Я не уверен, есть ли вызов _mmap()
в подсистеме совместимости POSIX. Скорее всего, он там есть, но будет иметь имя с первым подчеркиванием, потому что у Microsoft есть альтернативное представление о пространствах имен и она рассматривает mmap()
для вторжения в пространство имен пользователя, даже если вы запрашиваете функциональность POSIX. Вы можете найти определение альтернативного интерфейса Windows MapViewOfFile()
и обсуждение производительности в другом вопросе SO (mmap()
против блоков чтения .
Если вы попытаетесь отобразить большие файлы в 32-разрядной системе, вы можете обнаружить, что не хватает смежного пространства для выделения всего файла в памяти, поэтому отображение памяти не удастся. Не думайте, что это сработает; решите, какова ваша запасная стратегия, если она потерпит неудачу.