5

Согласно этой странице википедии, размер отдельного файла на Win10 может увеличиться до 8 ПБ с NTFS. И все же структура Stat определяется как

struct stat
{
    _dev_t         st_dev;
    _ino_t         st_ino;
    unsigned short st_mode;
    short          st_nlink;
    short          st_uid;
    short          st_gid;
    _dev_t         st_rdev;
    _off_t         st_size;
    time_t         st_atime;
    time_t         st_mtime;
    time_t         st_ctime;
};

где off_t - это тип, определенный как long. Это означает ограничение примерно в 4 ГБ. Согласно этой странице, описывающей стекопоток, даже для 32-разрядных ОС размер файла может быть больше его.

Если я не ошибаюсь, как можно использовать struct stat для надежного получения размера файла. Кроме того, что произойдет, если размер файла превысит ограничение типа long?

1 ответ1

4

Вам лучше использовать 64-битные версии функций stat.

Структура __stat64 из включаемого файла stat.h :

struct _stat64
{
    _dev_t         st_dev;
    _ino_t         st_ino;
    unsigned short st_mode;
    short          st_nlink;
    short          st_uid;
    short          st_gid;
    _dev_t         st_rdev;
    __int64        st_size;
    __time64_t     st_atime;
    __time64_t     st_mtime;
    __time64_t     st_ctime;
};

Здесь st_size - это __int64 который является 64-битным, а не 32-битным.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .