Я ищу, чтобы применить KMP (или аналогичный) поиск к большому файлу (> 4 ГБ).Каков наилучший способ сделать поиск в большом файле?
Я ожидаю, что это даст мне проблемы. Я не могу скопировать все это в память, потому что там не хватает места.
Мой вопрос: что это лучший способ сделать этот поиск? Должен ли я просто создавать FILE * и выполнять поиск непосредственно в файле, следует ли копировать блоки (скажем, 4k) в память и искать их или что-то еще полностью?
+1 для использования mmap. Следует просто отметить, что вам все равно потребуется mmap в блоках на 32-битных машинах, потому что адресного пространства недостаточно. – tsg
Да, mmap (по крайней мере, на OSX, но это стандартная BSD) принимает смещение size_t len и off_t. OP должен проверить, имеют ли эти типы 64-битные значения, иначе он никогда не сможет обратиться за пределом 4 Гигабайта. –