我正在尝试将包含 1126 万个 uint16_t 值的数组写入磁盘。总内存大小应为 ~22 MB。但是,我的文件大小为 52MB。我正在使用 fprintf 将数组写入磁盘。我想也许这些价值观正在被提升。我试图明确,但似乎没有任何区别。我的文件大小一直不变。
我究竟做错了什么?代码如下。
#define __STDC_FORMAT_MACROS
...
uint32_t dbsize = 11262336;
uint16_t* db_ = new uint16_t[dbsize_];
...
char fname[256] = "foo";
FILE* f = fopen(fname, "wb");
if(f == NULL)
{
return;
}
fprintf(f, "%i\t", dbsize_);
for(uint32_t i = 0; i < dbsize_; i++)
{
fprintf(f, "%" SCNu16 "", db_[i]);
}
fclose(f);