
De acordo comesta página da Wikipédia, o tamanho de um arquivo individual no Win10 pode chegar a cerca de 8 PB com NTFS. No entanto, a estrutura Stat é definida como
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;
};
onde off_t é o tipo definido como longo. Isso significa um limite de aproximadamente 4 GB. De acordo comesta página stackoverflow, mesmo para sistemas operacionais de 32 bits, o tamanho de um arquivo pode ser maior que ele.
A menos que eu tenha errado alguma coisa, como alguém pode usar struct stat para obter o tamanho de um arquivo de maneira confiável. Além disso, o que acontecerá se o tamanho do arquivo exceder o limite do tipo longo?
Responder1
Você deve preferir usar as versões de 64 bits do funções estatísticas.
A __stat64
estrutura do stat.h
arquivo de inclusão:
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;
};
Aqui st_size
está __int64
o que é de 64 bits e não de 32 bits.