
によるとこのウィキペディアのページWin10の個々のファイルのサイズはNTFSで約8PBまで大きくなる可能性があります。しかし、構造体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型として定義されています。つまり、およそ4GBの制限があるということです。このstackoverflowページ32 ビット OS の場合でも、ファイルのサイズはそれより大きくなる可能性があります。
私が何か間違えていない限り、struct stat を使用してファイルのサイズを確実に取得するにはどうすればよいでしょうか。さらに、ファイル サイズが long 型の制限を超えた場合はどうなりますか。
答え1
64ビット版を使用することをお勧めします。 統計関数。
__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;
};
ここは32 ビットではなく 64 ビットですst_size
。__int64