Есть причина тщательно подумать об использовании файлов, отображаемых в памяти, даже на 64-битной платформе (где размер виртуального адресного пространства не является проблемой).Это связано с (потенциальной) обработкой ошибок.
При чтении файла «условно» - любая ошибка ввода-вывода сообщается соответствующей возвращаемой функцией функцией.Остальная часть обработки ошибок зависит от вас.
OTOH, если ошибка возникает во время неявного ввода-вывода (в результате сбоя страницы и попытки загрузить нужную часть файла в соответствующую страницу памяти) - ошибкаМеханизм обработки зависит от ОС.
В Windows обработка ошибок выполняется с помощью SEH - так называемая «структурированная обработка исключений».Исключение распространяется на пользовательский режим (код приложения), где у вас есть шанс обработать его правильно.Правильная обработка требует, чтобы вы компилировали с соответствующими настройками обработки исключений в компиляторе (чтобы гарантировать вызов деструкторов, если применимо).
Я не знаю, как выполняется обработка ошибок в unix / linuxхотя.
PS Я не говорю, что не использует отображенные в памяти файлы.Я говорю делай это осторожно