Сопоставление входного файла в память и последующий анализ данных с отображенных страниц памяти может быть удобным и эффективным способом чтения данных из файлов.
Однако эта практика также кажется принципиально небезопасной, если вы не можете гарантировать, что никакой другой процесс не будет записывать в сопоставленный файл, потому что даже данные в частных сопоставлениях только для чтения могут измениться, если основной файл написан другим процессом. (POSIX, например не указывается, "видимы ли изменения в базовом объекте после создания MAP_PRIVATE-сопоставления через отображение MAP_PRIVATE".)
Если вы хотите сделать свой код безопасным при наличии внешних изменений в сопоставленном файле, вам нужно будет получить доступ к отображаемой памяти только с помощью летучих указателей, а затем будьте предельно осторожны с тем, как вы читаете и проверяете ввод, который представляется непрактичным для многих случаев использования.
Правильно ли этот анализ? Документация для API сопоставления памяти обычно упоминает эту проблему только мимоходом, если вообще, поэтому я задаюсь вопросом, не хватает ли я чего-то.