Помимо размера значений, которые могут хранить каждый тип, каковы основные различия в использовании между size_t
и off_t
? Является ли это просто соглашением, что типы size_t
используются для абсолютных размеров, а для смещений используются типы off_t
? Или он идет глубже, чем это?
Я пишу класс-оболочку, чтобы включить запись больших файлов с помощью mmap
, и я хочу знать, какие лучшие типы использовать для своих аргументов. Учитывая, что я хочу писать в файлы > 4 ГБ, у меня возникает соблазн использовать size_t для всего, но это лучшая практика? (или я должен использовать некоторые типы off64_t
для определенных функций?)
Например, если моя функция writeAt
будет объявлена как:
MMapWriter::writeAt(off64_t offset, const void* src, size_t size)
или
MMapWriter::writeAt(size_t offset, const void* src, size_t size)